Stap 2: Programmeren van de Arduino
1e-u zult moeten omvatten van de IR-bibliotheek in Arduino (hier is een link)2e-put in de code (bijlage)
3e-gebruik de #1 knop te openen van de servo en de #2-knop om het te sluiten
Hier is de code-
#include < Servo.h >
#include < Ultrasonic.h >
#include "IRremote.h"
#define TRIGGER_PIN 12 / / ultrasone sensor TRIGGER
#define ECHO_PIN 13 / / ultrasone sensor ECHO
#define afstand 20 / / in Centimeters
#define wachten 5000 / / in milliseconden dus dit 5 seconden is.
#define SERVO_PIN 9
#define CLOSE_POS 90 / / servo in nauwe/positie
#define OPEN_POS 180 / / servo in OPEN/rug positie
/ *---(Constanten declareren)---* /
int ontvanger = 11; pin 1 van IR ontvanger aan digitale pin van de Arduino 11
/ *---(Objecten declareren)---* /
IRrecv irrecv(receiver); exemplaar van 'irrecv' maken
decode_results resultaten; exemplaar van 'decode_results' maken
/ *---(Declareer variabelen)---* /
Ultrasonic ultrasone (TRIGGER_PIN, ECHO_PIN);
Servo myservo; servo-object om te bepalen van de servo PEZ maken
VOID Setup
{
Serial.begin(9600);
myservo.attach(SERVO_PIN); hecht de servo om pin
myservo.write(CLOSE_POS); servo wil sluiten/UP positie
Serial.println ("ruwe gegevens van de IR ontvanger + knop decoderen Test");
irrecv.enableIRIn(); Start de ontvanger
}
void loop
{
Als (irrecv.decode (& resultaten)) / / hebben wij een infrarood signaal ontvangen?
{
Serial.println (results.value, HEX); UN commentaar om te zien ruwe waarden
translateIR();
irrecv.resume(); de volgende waarde ontvangen
}
}
float cmMsec, inMsec;
lange microsec = ultrasonic.timing();
//
cmMsec = ultrasonic.convert (microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert (microsec, Ultrasonic::IN);
//
Dit is voor foutopsporing
Serial.Print ("MS:");
Serial.Print(Microsec);
Serial.Print (", CM: ');
Serial.Print(cmMsec);
Serial.Print (", IN:");
Serial.println(inMsec);
delay(1000);
//
VOID Setup / *---(SETUP: loopt eenmaal)---* /
//
/ / Serial.begin(9600);
Serial.println ("ruwe gegevens van de IR ontvanger + knop decoderen Test");
irrecv.enableIRIn(); Start de ontvanger
//
} / *--(eind setup)---* /
//
void loop / *---(lus: loopt voortdurend)---* /
// {
Als (irrecv.decode (& resultaten)) / / hebben wij een infrarood signaal ontvangen?
//
// {
Serial.println (results.value, HEX); UN commentaar om te zien ruwe waarden
translateIR();
irrecv.resume(); de volgende waarde ontvangen
// }
} / *--(einde hoofdlus)--* /
/ *---(Verklaren functies gebruikers geschreven)---* /
VOID translateIR() / / neemt actie op basis van de IR-code ontvangen
Auto MP3 IR-codes beschrijven
{
switch(results.Value)
{
Case 0xFF30CF:
Serial.println ("1");
myservo.write(OPEN_POS); vertellen van de servo naar OPEN/rug
breken;
Case 0xFF18E7:
Serial.println ("2");
myservo.write(CLOSE_POS); vertellen van de servo naar CLOSE/omhoog
breken;
standaard:
Serial.println ("andere button");
}
delay(500);
}
myservo.write(CLOSE_POS); vertellen van de servo naar CLOSE/omhoog
delay(15); wacht 15ms voor de servo te bereiken de positie
//
//
//
myservo.write(OPEN_POS); vertellen van de servo naar OPEN/rug
delay(Waiting); wacht ergens toe grijpen pellet van het snoep
//
//
//}