Stap 3: De programmering
Eerst, IRremote library voor arduino downloaden via deze link.
Kopieer de bibliotheek naar de lokale Disk(C:) > programma Files(x86) > Arduino > Bibliotheken
Open IRremote demo voorbeeld van Arduino IDE als afbeelding 1 en vervolgens uploaden naar de arduino board.
Vervolgens opent u seriële monitor en probeer te klikken op een willekeurige knop van de afstandsbediening om een signaal afgeven aan de IR ontvanger, de code van de Hexuitdraai van elke knop moet worden weergegeven in seriële monitor als afbeelding 2
Vervolgens detecteren de code van de Hexuitdraai van de knoppen gebruiken om te controleren de servomotor, neem aan dat u zult gebruiken twee knoppen van uw keuze, voor rechtsom draaien en een andere voor teller rechtsom draaien.
bijvoorbeeld, (+) te gebruiken voor met de klok mee en (-) voor tegen de klok in, dus je moet krijgen van hun HEX-codes.
(+)---> A3C8EDDB
(-)---> F076C13B
In de definitieve code is de functionaliteit als de motor op een van de twee knoppen te klikken is schakelen tussen de rotatie in de hoofdrichting en stop dus wanneer eerst Klik op een van de twee knoppen die de motor in de richting van knop draaien zal en als tweede klik op dezelfde knop de motor stopt zoals in de video.
De code is:
// Written by: Mohamed Soliman// This code is for controlling servo motor with IR remote control // When clicking at any of two buttons the motor is toggling between the rotation and stop#include <IRremote.h> //must copy IRremote library to arduino libraries #include <Servo.h> #define plus 0xA3C8EDDB //clockwise rotation button #define minus 0xF076C13B //counter clockwise rotation buttonint RECV_PIN = 2; //IR receiver pin Servo servo; int val; //rotation angle bool cwRotation, ccwRotation; //the states of rotationIRrecv irrecv(RECV_PIN);decode_results results;void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver servo.attach(9); //servo pin }void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value if (results.value == plus) { cwRotation = !cwRotation; //toggle the rotation value ccwRotation = false; //no rotation in this direction } if (results.value == minus) { ccwRotation = !ccwRotation; //toggle the rotation value cwRotation = false; //no rotation in this direction } } if (cwRotation && (val != 175)) { val++; //for colockwise button } if (ccwRotation && (val != 0)) { val--; //for counter colockwise button } servo.write(val); delay(20); //General speed }