privat:projekte:rasenmaeherroboter:fernsterung:arduinocode
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| privat:projekte:rasenmaeherroboter:fernsterung:arduinocode [2025/12/28 09:49] – vitalij | privat:projekte:rasenmaeherroboter:fernsterung:arduinocode [2026/01/19 17:41] (aktuell) – old revision restored vitalij | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | Notizen | + | {{.: |
| - | + | ||
| - | // Channel 2 für geschwindigkeit | + | |
| - | // channel 1 für links und rechts | + | |
| - | + | ||
| - | #include < | + | |
| - | AF_DCMotor motor1(1, MOTOR12_64KHZ); | + | |
| - | AF_DCMotor motor2(2, MOTOR12_64KHZ); | + | |
| - | AF_DCMotor motor3(3, MOTOR12_64KHZ); | + | |
| - | + | ||
| - | int PWM_PIN22 = 17; //Define Digital PIN | + | |
| - | int PWM_PIN18 = 18; //Define Digital PIN | + | |
| - | int PWM_PIN19 = 19; //Define Digital PIN | + | |
| - | int PWM_PIN20 = 20; //Define Digital PIN | + | |
| - | int PWM_PIN21 = 21; //Define Digital PIN | + | |
| - | + | ||
| - | + | ||
| - | void setup() { | + | |
| - | + | ||
| - | + | ||
| - | pinMode(PWM_PIN18, | + | |
| - | + | ||
| - | pinMode(PWM_PIN19, | + | |
| - | pinMode(PWM_PIN20, | + | |
| - | pinMode(PWM_PIN21, | + | |
| - | pinMode(PWM_PIN22, | + | |
| - | Serial.begin(115200); | + | |
| - | } | + | |
| - | + | ||
| - | void loop() { | + | |
| - | // | + | |
| - | int pwm1 = pulseIn(PWM_PIN19, | + | |
| - | int pwm2 = pulseIn(PWM_PIN20, | + | |
| - | int pwm3 = pulseIn(PWM_PIN21, | + | |
| - | + | ||
| - | int maehen = pulseIn(PWM_PIN22, | + | |
| - | // int maehen = digitalRead(PWM_PIN22); | + | |
| - | + | ||
| - | + | ||
| - | int a = pulseToPWM(pwm1); | + | |
| - | int b = pulseToPWM(pwm2); | + | |
| - | int c = pulseToPWM(pwm3); | + | |
| - | //int c = 499-(pwm3-996); | + | |
| - | + | ||
| - | //int d = 499-(maehen-996); | + | |
| - | int d = pulseToPWM(maehen); | + | |
| - | + | ||
| - | // Serial.print(" | + | |
| - | // Serial.print(a); | + | |
| - | // Serial.print(" | + | |
| - | // Serial.print(b); | + | |
| - | // Serial.print(" | + | |
| - | // Serial.println(c); | + | |
| - | Serial.print(" | + | |
| - | Serial.println(maehen); | + | |
| - | + | ||
| - | if (a>0) { | + | |
| - | motor1.run(FORWARD); | + | |
| - | motor1.setSpeed(abs(a)); | + | |
| - | } | + | |
| - | else if (a<0) { | + | |
| - | motor1.run(BACKWARD); | + | |
| - | motor1.setSpeed(abs(a)); | + | |
| - | } | + | |
| - | else { | + | |
| - | motor1.run(RELEASE); | + | |
| - | } | + | |
| - | + | ||
| - | if (b>0) { | + | |
| - | motor2.run(FORWARD); | + | |
| - | motor2.setSpeed(abs(b)); | + | |
| - | } | + | |
| - | else if (b<0) { | + | |
| - | motor2.run(BACKWARD); | + | |
| - | motor2.setSpeed(abs(b)); | + | |
| - | } | + | |
| - | else { | + | |
| - | motor2.run(RELEASE); | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | if (d>0){ | + | |
| - | motor3.run(BACKWARD); | + | |
| - | motor3.setSpeed(d); | + | |
| - | }else { | + | |
| - | motor3.run(RELEASE); | + | |
| - | } | + | |
| - | + | ||
| - | } | + | |
| - | + | ||
| - | int pulseToPWM(int pulse) { | + | |
| - | + | ||
| - | const int deadzone = 10; | + | |
| - | const int hlevel = 1998; //höchste gelieferte Frequenz | + | |
| - | const int llevel = 996; // | + | |
| - | const int glevel = 255; // | + | |
| - | + | ||
| - | if (pulse > 100) { // nur Werte > 100 verwerten, andere sind Störung oder Sender off | + | |
| - | + | ||
| - | pulse = map(pulse, llevel, hlevel, -500, 500); // Ausgabewertebereich verschieben | + | |
| - | + | ||
| - | pulse = constrain(pulse, | + | |
| - | } else { | + | |
| - | + | ||
| - | pulse = 0; // keine sinnvollen Impulse | + | |
| - | } | + | |
| - | + | ||
| - | // Ruhezone einrichten | + | |
| - | if (abs(pulse) <= deadzone) { | + | |
| - | pulse = 0; | + | |
| - | } | + | |
| - | + | ||
| - | return pulse; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | https:// | + | |
| - | https:// | + | |
| - | + | ||
| - | + | ||
| - | PWM Output Sketch | + | |
| - | + | ||
| - | Aus < https:// | + | |
| - | + | ||
| - | + | ||
| - | Arduino FS-I6X Demo | + | |
| - | C++ | + | |
| - | /* | + | |
| - | Arduino FS-I6X Demo | + | |
| - | fsi6x-arduino-uno.ino | + | |
| - | Read output ports from FS-IA6B receiver module | + | |
| - | Display values on Serial Monitor | + | |
| - | + | ||
| - | Channel functions by Ricardo Paiva - https:// | + | |
| - | + | ||
| - | DroneBot Workshop 2021 | + | |
| - | | + | |
| - | */ | + | |
| - | + | ||
| - | // Define Input Connections | + | |
| - | #define CH1 3 | + | |
| - | #define CH2 5 | + | |
| - | #define CH3 6 | + | |
| - | #define CH4 9 | + | |
| - | #define CH5 10 | + | |
| - | #define CH6 11 | + | |
| - | + | ||
| - | // Integers to represent values from sticks and pots | + | |
| - | int ch1Value; | + | |
| - | int ch2Value; | + | |
| - | int ch3Value; | + | |
| - | int ch4Value; | + | |
| - | int ch5Value; | + | |
| - | + | ||
| - | // Boolean to represent switch value | + | |
| - | bool ch6Value; | + | |
| - | + | ||
| - | // Read the number of a specified channel and convert to the range provided. | + | |
| - | // If the channel is off, return the default value | + | |
| - | int readChannel(int channelInput, | + | |
| - | int ch = pulseIn(channelInput, | + | |
| - | if (ch < 100) return defaultValue; | + | |
| - | return map(ch, 1000, 2000, minLimit, maxLimit); | + | |
| - | } | + | |
| - | + | ||
| - | // Read the switch channel and return a boolean value | + | |
| - | bool readSwitch(byte channelInput, | + | |
| - | int intDefaultValue = (defaultValue)? | + | |
| - | int ch = readChannel(channelInput, | + | |
| - | return (ch > 50); | + | |
| - | } | + | |
| - | + | ||
| - | void setup(){ | + | |
| - | // Set up serial monitor | + | |
| - | Serial.begin(115200); | + | |
| - | + | ||
| - | // Set all pins as inputs | + | |
| - | pinMode(CH1, | + | |
| - | pinMode(CH2, | + | |
| - | pinMode(CH3, | + | |
| - | pinMode(CH4, | + | |
| - | pinMode(CH5, | + | |
| - | pinMode(CH6, | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | void loop() { | + | |
| - | + | ||
| - | // Get values for each channel | + | |
| - | ch1Value = readChannel(CH1, | + | |
| - | ch2Value = readChannel(CH2, | + | |
| - | ch3Value = readChannel(CH3, | + | |
| - | ch4Value = readChannel(CH4, | + | |
| - | ch5Value = readChannel(CH5, | + | |
| - | ch6Value = readSwitch(CH6, | + | |
| - | + | ||
| - | // Print to Serial Monitor | + | |
| - | Serial.print(" | + | |
| - | Serial.print(ch1Value); | + | |
| - | Serial.print(" | + | |
| - | Serial.print(ch2Value); | + | |
| - | Serial.print(" | + | |
| - | Serial.print(ch3Value); | + | |
| - | Serial.print(" | + | |
| - | Serial.print(ch4Value); | + | |
| - | Serial.print(" | + | |
| - | Serial.print(ch5Value); | + | |
| - | Serial.print(" | + | |
| - | Serial.println(ch6Value); | + | |
| - | + | ||
| - | delay(500); | + | |
| - | } | + | |
| - | + | ||
| - | Aus < https:// | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | Arduino Mega 2560 Hookup | + | |
| - | + | ||
| - | Aus < https:// | + | |
| - | + | ||
| - | + | ||
| - | Code | + | |
| - | The Code for the Arduino RC Car | + | |
| - | arduino | + | |
| - | Again, try to understand how it works! | + | |
| - | + | ||
| - | Aus < https:// | + | |
| - | + | ||
| - | {{.: | + | |
privat/projekte/rasenmaeherroboter/fernsterung/arduinocode.1766915352.txt.gz · Zuletzt geändert: von vitalij
