// Knipperen LED als de ontvanger wordt ingeschakeld vóór de zender, motor loopt niet // Wordt de zender aangezet gaat LED uit en kan de motor worden aangestuurd. // Adriaan Boele/Gerrit Volgers 26-03-2021 // Referentie De Modelbouwer 2021-5 const int CH_3 = A2; //Kanaal voor testen op signaal en aansturing motor op A2 const int SAFE_LED = 12; // LED signalering zendersignaal op D12 const int MOT1a = 11; // Motor driver uitgang (PWM) const int MOT1b = 9; // Motor driver uitgang (PWM) int pwm = 0; // Puls detectie int safe = 0; // Status ontvangst zendersignaal // -----------------------SETUP--------------------------------------------------------- void setup() { pinMode(SAFE_LED, OUTPUT); // controle LED zendersignaal pinMode(MOT1a,OUTPUT); // Motor uitgang 1a pinMode(MOT1b,OUTPUT); // Motor uitgang 1b int ch3 = pulseIn (CH_3, HIGH, 40000); // RC puls pwm = map (ch3, 1000, 2000, -254, 254); // //converteer puls naar 0-255 range // (Evt aanpassen aan zender) } // ------------------------- CONTROLE ZENDERSIGNAAL ------------------------------------- void loop() { int ch3 = pulseIn (CH_3, HIGH, 40000); // RC puls if ( ( ch3 > 1000 ) && ( ch3 < 20000 ) ) ( safe = 1 ); // Verificatie of er een RC signaal is else ( safe = 0 ); if ( safe == 0 ) { // Geen zendersignaal digitalWrite (SAFE_LED,HIGH); delay (250); // controle LED knippert digitalWrite (SAFE_LED, LOW); delay (550); } // controle LED knippert digitalWrite (MOT1a, LOW); // Uitgang motor 1a geblokeerd digitalWrite (MOT1b, LOW); // Uitgang motor 1b geblokkeerd // -----------------PROGRAMMA ALS ER EEN ZENDERSIGNAAL IS-------------------------- if ( safe == 1 ) { digitalWrite ( SAFE_LED , LOW ); // Als er zendersignaal is, blijft LED uit int ch3 = pulseIn(CH_3, HIGH, 50000); //Lees puls in van kanaal 2 pwm = map(ch3, 1000, 2000, -254, 254); //converteer puls naar 0-255 range, //Kanaalpuls evt. aanpassen aan zender if ((pwm > -20) && (pwm < 20)) { // Neutraal positie knuppel digitalWrite(MOT1a, LOW); // Motor vooruit stop digitalWrite(MOT1b, LOW); // Motor achteruit stop } else if (pwm > 40) { // knuppel naar voren digitalWrite(MOT1a, LOW); // Motor vooruit analogWrite (MOT1b,abs(pwm)); // Motor vooruit, geregeld } else if (pwm < -40) { // knuppel naar achteren analogWrite (MOT1a,abs(pwm)); // Motor achteruit, geregeld digitalWrite(MOT1b, LOW); // Motor achteruit } } } // ----------------------------- Einde programma----------------------------------------------------------