Stap 2: elektronica
Dit project maakt gebruik van Arduino controle sensoren en LED's. Vijf rode LEDs worden gebruikt aan het licht van de pompoen. Twee LEDs moeten binnen een mond, twee in de ogen en een op een gesneden deel van een hoofd worden geplaatst. PIR bewegingsmelder moet worden gebracht in pompoenen neus. Groene LED binnen pompoen hoofd moeten worden geplaatst en wordt gebruikt om aan te geven wanneer de PIR sensor is gekalibreerd. Zoemer moet binnen een mond pompoenen worden geplaatst. Servomotor moet worden geplaatst op de top van de pompoenen hoofd naar beneden elke andere zodat ze hijst gesneden deel.
Arduino turns LED's, motoren en zoemer op wanneer PIR sensor motie ontdekken. Zoemer speelt dan de enge melodie (Halloween thema), servo's zijn gesneden deel van de pompoenen hoofd tillen en rode LEDs zijn verlichting de sfeer.
Delen:
- 1 x Arduino (een soort) - eBay
- 6 x 220 Ohm weerstand - eBay
- 5 x rode LED - eBay
- 1 x groene LED - eBay
- 2 x servomotor - eBay
- 1 x Buzzer - eBay
- 1 x PIR bewegingssensor - eBay
- 1 x Breadboard - eBay
- Weinig draden (M/M en F/F) - eBay
- Batterij (of u kunt een klein gat op een pompoen en macht het Trough computer)
Bedrading:
Eerste servomotor:
- VCC naar 5V op de Arduino
- GND met gnd op Arduino
- signaal tot digitale pin 9 op Arduino
Tweede servomotor:
- VCC naar 5V op de Arduino
- GND met gnd op Arduino
- signaal tot digitale pin 11 op Arduino
Rode LEDs:
- anoden (lange been) om de weerstand van 220 Ohm die is aangesloten op de digitale pennen 2,3,4,5,6 op Arduino
- kathoden (kortere been) met gnd op Arduino
Groene LEDs:
- anode naar weerstand van 220 Ohm die is aangesloten op de digitale pin 10 op Arduino
- kathode met gnd op Arduino
Zoemer:
- een been naar digitale pin 8 op Arduino
- Andere aan gnd op Arduino
PIR sensor:
- VCC naar 5V op de Arduino
- GND met gnd op Arduino
- uit naar digitaal pin 7 op Arduino
Code:
Eerste deel van de code is het definiëren van variabelen voor een pinnen en notities voor een zoemer. Notities zijn genomen uit dit instructable door eserra. Ik ben niet gona kopie Opmerking definities hier, kunt u hen een gekoppelde instructable of in een bestand van de volledige schets aan het eind van deze stap.
#include<Servo.h>Servo servo;Servo servo2;#define buzzer 8#define pirPin 7</p><p>int okLed = 10;</p><p>boolean lockLow = true;boolean takeLowTime;long unsigned int pause = 5000;long unsigned int lowIn;int ledPin[] = {2, 3, 4, 5, 6};
Setup functies definieert pin modi, servomotoren resulteert in de beginpositie en PIR sensor kalibreert.
void setup() { servo.attach(9); servo2.attach(11); servo.write(170); //my start position of servos (so their attachments are horizontal ) servo2.write(170); pinMode(pirPin, INPUT); digitalWrite(pirPin, LOW); for (int i = 0; i < 5; i++) { //go trough every red LED pinMode(ledPin[i], OUTPUT); } pinMode(buzzer, OUTPUT);<br> pinMode(okLed, OUTPUT); digitalWrite(okLed, LOW); delay(30000); //callibration time for a PIR sensor digitalWrite(okLed, HIGH);}
Lus functie controleert als PIR gedetecteerd motion (digitalRead op PIR sensor moet retourneren HIGH), als beweging wordt gedetecteerd, het begint motionAction functie. Volledige algorythm uitleg voor het werken met PIR sensor kan worden gevonden hier dus ik zal het hier niet uitleggen.
void loop() { delay(50); if (digitalRead(pirPin) == HIGH) { if (lockLow) { lockLow = false; motionAction(); delay(50); } takeLowTime = true; } if (digitalRead(pirPin) == LOW) {</p><p> if (takeLowTime) { lowIn = millis(); takeLowTime = false; } if (!lockLow && millis() - lowIn > pause) { lockLow = true; delay(50); } }}
motionAction functie Hiermee schakelt u alle rode LEDs, servomotoren in 90 graden beweegt en begint te spelen van de melodie. Na dat het retourneert motoren naar uitgangspositie en begint te spelen dezelfde melodie weer maar in een lager octaaf. Het herhaalt die acties vijfmaal.
int motionAction () {<br> for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) { digitalWrite(ledPin[i], HIGH); } servo.write(80); servo2.write(80); tone(buzzer, Db6, E); delay(E + 1); tone(buzzer, Gb5, E); delay(E + 1); tone(buzzer, Gb5, E); delay(E + 1); tone(buzzer, Db6, E); delay(E + 1); tone(buzzer, Gb5, E); delay(E + 1); tone(buzzer, Gb5, E); delay(E + 1); tone(buzzer, D6, Q); delay(Q + 1); delay(1000); servo.write(170); servo2.write(170); tone(buzzer, Db5, E); delay(E + 1); tone(buzzer, Gb4, E); delay(E + 1); tone(buzzer, Gb4, E); delay(E + 1); tone(buzzer, Db5, E); delay(E + 1); tone(buzzer, Gb4, E); delay(E + 1); tone(buzzer, Gb4, E); delay(E + 1); tone(buzzer, D5, Q); delay(Q + 1); for (int i = 0; i < 5; i++) { digitalWrite(ledPin[i], LOW); } delay(1000); }}