Devices & Components
Arduino Uno Rev3
Plywood Sheets
USB Cable for Arduino UNO
Mini breadboard - White
Generic Pins
5V Power Bank
Various cables, bolts, nuts and screws
Wood Glue
Zip ties
LED (generic)
470 Ohm Resistor
10k Ohm Resistor
Heat Shrink Tubing, Assorted Sizes
3D printing filament
Tactile Push Button
Hardware & Tools
Hot glue gun (generic)
Trotec Speedy 100 Laser and Engraver
Solomon SL-30 Soldering Station
Tinkerine Ditto Pro 3D Printer
Software & Tools
AutoCAD 2023
Arduino IDE
Autodesk Inventor
Tinkerine Suite 3 (No longer supported; Use TInkerine Cloud)
Project description
Code
Arduino Bike
cpp
There is a better way to make the LEDs blink.
1const int leftButton = 2; 2const int rightButton = 13; 3// Variables will change: 4int left_ledState = LOW; // the current state of the output pin 5int left_buttonState; // the current reading from the input pin 6int left_lastButtonState = HIGH; // the previous reading from the input pin 7int right_ledState = LOW; // the current state of the output pin 8int right_buttonState; // the current reading from the input pin 9int right_lastButtonState = HIGH; // the previous reading from the input pin 10 11// the following variables are long's because the time, measured in miliseconds, 12// will quickly become a bigger number than can be stored in an int. 13long lastDebounceTime = 0; // the last time the output pin was toggled 14long debounceDelay = 50; // the debounce time; increase if the output flickers 15 16void setup() { 17pinMode(12, OUTPUT); 18pinMode(11, OUTPUT); 19pinMode(10, OUTPUT); 20pinMode(9, OUTPUT); 21pinMode(8, OUTPUT); 22pinMode(7, OUTPUT); 23pinMode(6, OUTPUT); 24pinMode(5, OUTPUT); 25pinMode(4, OUTPUT); 26pinMode(3, OUTPUT); 27pinMode(rightButton, INPUT); 28pinMode(leftButton, INPUT); 29Serial.begin(9600); 30} 31 32void loop() { 33 34 35// LEFt 36 37// read the state of the switch into a local variable: 38 int left_reading = digitalRead(leftButton); 39 40 // check to see if you just pressed the button 41 // (i.e. the input went from LOW to HIGH), and you've waited 42 // long enough since the last press to ignore any noise: 43 44 // If the switch changed, due to noise or pressing: 45 if (left_reading != left_lastButtonState) { 46 // reset the debouncing timer 47 lastDebounceTime = millis(); 48 } 49 50 if ((millis() - lastDebounceTime) > debounceDelay) { 51 // whatever the reading is at, it's been there for longer 52 // than the debounce delay, so take it as the actual current state: 53 54 // if the button state has changed: 55 if (left_reading != left_buttonState) { 56 left_buttonState = left_reading; 57 //#1 58 digitalWrite(12, left_ledState); 59 digitalWrite(11, left_ledState); 60 digitalWrite(10, left_ledState); 61 digitalWrite(9, left_ledState); 62 digitalWrite(8, left_ledState); 63 delay(500); 64 digitalWrite(12, !left_ledState); 65 digitalWrite(11, !left_ledState); 66 digitalWrite(10, !left_ledState); 67 digitalWrite(9, !left_ledState); 68 digitalWrite(8, !left_ledState); 69 delay(500); 70 //#2 71 digitalWrite(12, left_ledState); 72 digitalWrite(11, left_ledState); 73 digitalWrite(10, left_ledState); 74 digitalWrite(9, left_ledState); 75 digitalWrite(8, left_ledState); 76 delay(500); 77 digitalWrite(12, !left_ledState); 78 digitalWrite(11, !left_ledState); 79 digitalWrite(10, !left_ledState); 80 digitalWrite(9, !left_ledState); 81 digitalWrite(8, !left_ledState); 82 delay(500); 83 //#3 84 digitalWrite(12, left_ledState); 85 digitalWrite(11, left_ledState); 86 digitalWrite(10, left_ledState); 87 digitalWrite(9, left_ledState); 88 digitalWrite(8, left_ledState); 89 delay(500); 90 digitalWrite(12, !left_ledState); 91 digitalWrite(11, !left_ledState); 92 digitalWrite(10, !left_ledState); 93 digitalWrite(9, !left_ledState); 94 digitalWrite(8, !left_ledState); 95 delay(500); 96 //#4 97 digitalWrite(12, left_ledState); 98 digitalWrite(11, left_ledState); 99 digitalWrite(10, left_ledState); 100 digitalWrite(9, left_ledState); 101 digitalWrite(8, left_ledState); 102 delay(500); 103 digitalWrite(12, !left_ledState); 104 digitalWrite(11, !left_ledState); 105 digitalWrite(10, !left_ledState); 106 digitalWrite(9, !left_ledState); 107 digitalWrite(8, !left_ledState); 108 delay(500); 109 //#5 110 digitalWrite(12, left_ledState); 111 digitalWrite(11, left_ledState); 112 digitalWrite(10, left_ledState); 113 digitalWrite(9, left_ledState); 114 digitalWrite(8, left_ledState); 115 delay(500); 116 digitalWrite(12, !left_ledState); 117 digitalWrite(11, !left_ledState); 118 digitalWrite(10, !left_ledState); 119 digitalWrite(9, !left_ledState); 120 digitalWrite(8, !left_ledState); 121 delay(500); 122 } 123 124 // only toggle the LED if the new button state is HIGH 125 if (left_buttonState == LOW) { 126 digitalWrite(12, LOW); 127 digitalWrite(11, LOW); 128 digitalWrite(10, LOW); 129 digitalWrite(9, LOW); 130 digitalWrite(8, LOW); 131 } 132 133 } 134 135 136 left_lastButtonState = left_reading; 137 138 139 140 141 142 143 144 145 146//Right 147 148 149 150 // save the reading. Next time through the loop, 151 // it'll be the right_lastButtonState: 152 153int right_reading = digitalRead(rightButton); 154 155 // check to see if you just pressed the button 156 // (i.e. the input went from LOW to HIGH), and you've waited 157 // long enough since the last press to ignore any noise: 158 159 // If the switch changed, due to noise or pressing: 160 if (right_reading != right_lastButtonState) { 161 // reset the debouncing timer 162 lastDebounceTime = millis(); 163 } 164 165 if ((millis() - lastDebounceTime) > debounceDelay) { 166 // whatever the reading is at, it's been there for longer 167 // than the debounce delay, so take it as the actual current state: 168 169 // if the button state has changed: 170 if (right_reading != right_buttonState) { 171 right_buttonState = right_reading; 172 //#1 173 digitalWrite(7, right_ledState); 174 digitalWrite(6, right_ledState); 175 digitalWrite(5, right_ledState); 176 digitalWrite(4, right_ledState); 177 digitalWrite(3, right_ledState); 178 delay(500); 179 digitalWrite(7, !right_ledState); 180 digitalWrite(6, !right_ledState); 181 digitalWrite(5, !right_ledState); 182 digitalWrite(4, !right_ledState); 183 digitalWrite(3, !right_ledState); 184 delay(500); 185 //#2 186 digitalWrite(7, right_ledState); 187 digitalWrite(6, right_ledState); 188 digitalWrite(5, right_ledState); 189 digitalWrite(4, right_ledState); 190 digitalWrite(3, right_ledState); 191 delay(500); 192 digitalWrite(7, !right_ledState); 193 digitalWrite(6, !right_ledState); 194 digitalWrite(5, !right_ledState); 195 digitalWrite(4, !right_ledState); 196 digitalWrite(3, !right_ledState); 197 delay(500); 198 //#3 199 digitalWrite(7, right_ledState); 200 digitalWrite(6, right_ledState); 201 digitalWrite(5, right_ledState); 202 digitalWrite(4, right_ledState); 203 digitalWrite(3, right_ledState); 204 delay(500); 205 digitalWrite(7, !right_ledState); 206 digitalWrite(6, !right_ledState); 207 digitalWrite(5, !right_ledState); 208 digitalWrite(4, !right_ledState); 209 digitalWrite(3, !right_ledState); 210 delay(500); 211 //#4 212 digitalWrite(7, right_ledState); 213 digitalWrite(6, right_ledState); 214 digitalWrite(5, right_ledState); 215 digitalWrite(4, right_ledState); 216 digitalWrite(3, right_ledState); 217 delay(500); 218 digitalWrite(7, !right_ledState); 219 digitalWrite(6, !right_ledState); 220 digitalWrite(5, !right_ledState); 221 digitalWrite(4, !right_ledState); 222 digitalWrite(3, !right_ledState); 223 delay(500); 224 //#5 225 digitalWrite(7, right_ledState); 226 digitalWrite(6, right_ledState); 227 digitalWrite(5, right_ledState); 228 digitalWrite(4, right_ledState); 229 digitalWrite(3, right_ledState); 230 delay(500); 231 digitalWrite(7, !right_ledState); 232 digitalWrite(6, !right_ledState); 233 digitalWrite(5, !right_ledState); 234 digitalWrite(4, !right_ledState); 235 digitalWrite(3, !right_ledState); 236 delay(500); 237 } 238 239 // only toggle the LED if the new button state is HIGH 240 if (right_buttonState == LOW) { 241 digitalWrite(7, LOW); 242 digitalWrite(6, LOW); 243 digitalWrite(5, LOW); 244 digitalWrite(4, LOW); 245 digitalWrite(3, LOW); 246 } 247 } 248 249 250 251 right_lastButtonState = right_reading; 252 253 254}
Downloadable files
Direction Indicator LEDs
Holds the LEDs
Direction Bike.stl
Button Bike 1 STL
Top part of a clamp holding the one of the butto .
file.None
Button Bike 2 STL
Bottom part of a clamp holding one of the buttons.
file.None
Connector Direction Indicator LEDs
Connects the part holding the LEDs with the clamp.
Dir-Cla Bike.stl
Clamp Direction Indicator
Holds the direction indicator with the LEDs.
Clamp 2 Bike.stl
Laser-Cut Plywood Box
Box for Arduino and Breadboard
ArdBox.pdf
Documentation
Wiring Diagram
(Could not get button Data points)
png2pdf.pdf
Comments
Only logged in users can leave comments