New York City Pedestrian Traffic Light
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
This is my interpretation of the classic New York City pedestrian traffic light.
- Ocena
- 0 / 5
- Polubienia
- 67
- Pobrania
- 197
- Wydruki
- 1
- Wyświetlenia
- 1610
- Oceny
- 0
Aktualizacja u źródła:
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Home Decor
- Licencja
- Creative Commons — Attribution — Noncommercial
This decorative lamp is meant to represent a pedestrian traffic light. Inside the housing there is space for LED Strips. I powered my version with an ATTINY 13a, which runs a little script for the light sequence. The code can be found below.
The model can be printed entirely on the Prusa Mini, though you need to turn off the skirt for some parts. The housing needs to be printed with a layer height of 0.15mm, otherwise the slicer will place some of the support material outside of the build volume.
To finish the build you'll need m3x10 thread cutting screws, a micro-USB breakout board (such as: https://tinyurl.com/USBbreakout) and a little switch. To stop the light from shining through the walls, I used ducktape.
Code:
#define pinRed 3
#define pinWhite 4
#define pinSwitch 2unsigned long lastTime = 0; // Keeps track of the time
void setup() {
// setup code:
pinMode(pinRed, OUTPUT);
pinMode(pinWhite, OUTPUT);
pinMode(pinSwitch, INPUT);
digitalWrite(pinRed, LOW);
digitalWrite(pinWhite, LOW);
}
void loop() {
if(digitalRead(pinSwitch) == HIGH){ // If the switch is on, both red and white are turned on
digitalWrite(pinRed, HIGH);
digitalWrite(pinWhite, HIGH);
}else{ // If the switch is off, the traffic light sequence is used
digitalWrite(pinRed, LOW);
digitalWrite(pinWhite, HIGH);
lastTime = millis();
while(millis() - lastTime < 30000){ // White is turned on for 30 seconds
if(digitalRead(pinSwitch) == HIGH){ // If the switch is turned on, the sequence is aborted and the program returns to the beginnig of loop()
return;
}
}
digitalWrite(pinWhite, LOW);
for(int i = 0; i<7; i++){ // Red blinks 6 times before being turned on continuesly
digitalWrite(pinRed, HIGH);
lastTime = millis();
while(millis() - lastTime < 500){
if(digitalRead(pinSwitch) == HIGH){ // If the switch is turned on, the sequence is aborted and the program returns to the beginnig of loop()
return;
}
}
digitalWrite(pinRed, LOW);
lastTime = millis();
while(millis() - lastTime < 500){
if(digitalRead(pinSwitch) == HIGH){ // If the switch is turned on, the sequence is aborted and the program returns to the beginnig of loop()
return;
}
}
}
digitalWrite(pinRed, HIGH);
lastTime = millis();
while(millis() - lastTime < 30000){ // Red is turned on for 30 seconds
if(digitalRead(pinSwitch) == HIGH){ // If the switch is turned on, the sequence is aborted and the program returns to the beginnig of loop()
return;
}
}
}
}