Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
modellbau:snippets:start [2016/04/08 21:57] |
modellbau:snippets:start [2020/11/01 16:40] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Modellbau Snippets ====== | ||
+ | Modellbau Snippets sind Mini Projekte rund um den Modellbau. Das können Sachen sein, die in anderen Projekten gebraucht wurden, und als Snippet dokumentiert werden, damit sie nicht im eigentlichen Projekt untergehen. Oder aber auch Kleinigkeiten die für eine eigene Seite zu gering sind. | ||
+ | \\ [[: | ||
+ | ===== Taranis 4-in-1 Module für seriellen Betrieb vorbereiten ===== | ||
+ | Das [[banggood> | ||
+ | |||
+ | Um das Modul auf den seriellen Betrieb vorzubereiten muss man nur zwei Lötbrücken auf der Vorderseite schließen. Und es empfiehlt sich auch ein Update der Firmware des Modul zu machen. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | ===== Taranis plus update von OpenTX 2.0 nach 2.1 ===== | ||
+ | |||
+ | Da ich in den Telemetrie Screens und im Lua auf die einzellen Zellen meines [[modellbau: | ||
+ | |||
+ | === Was ich vor dem Update gefunden habe: === | ||
+ | |||
+ | * Telemetrie-Scripte sind nicht kompatibel mit 2.0 | ||
+ | * Die Telemetrie-Scripte sind jetzt im Ordner ''/ | ||
+ | * Die Sound Dateien müssen upgedated werden. Link zu den Sound downloads ist auf dem download update screen vom Companion 2.1 | ||
+ | * Es gibt kein fertiges SD-Karten Image, dass man einfach kopieren kann. | ||
+ | * Man kann das OpenTX Companion für Version 2.1 parallel zu dem alten installieren. | ||
+ | * Per Zufall im Release Note von OpenTX 2.1.7 noch gelesen, dass es für den Modell-Wizard ein update gibt. | ||
+ | |||
+ | === Wie bin ich also vorgeganen? === | ||
+ | | ||
+ | |||
+ | * Also erstmal ein Backup vom EEprom in Companion 2.0 gemacht. | ||
+ | * Inhalt der SD-Karte auf Rechner speichern. | ||
+ | * Update auf die letzte OpenTX 2.0.18 gemacht. | ||
+ | * Taranis einmal gestartet um zu checken ob noch alles okay ist. | ||
+ | * Taranis wieder an den Rechner und Companion 2.1 gestartet. | ||
+ | * Update per Companion runterladen. | ||
+ | * Update auf die Taranis hochladen. | ||
+ | * Taranis von Rechner trennen. | ||
+ | * Taranis starten. Es kommt eine Meldung, dass der EEprom konvertiert werden muss. Mit Enter bestättigen und abwarten. | ||
+ | * Sound Dateien runter laden und damit die alten ersetzen. | ||
+ | * Ordner / | ||
+ | * Alte Telemetrie Scripte gelöscht. | ||
+ | * Den Wizard mit dem der zu OpenTX 2.1.7 veröffentlicht wurde ersetzt. | ||
+ | * In allen Modellen in die Modelleinstellungen gehen und bis in die Telemetrie Einstellungen wechseln. Dort nach Sensoren scannen lassen. Modell natürlich auch einschalten ;-) | ||
+ | |||
+ | ... ich glaube das wars. Fertig. Mal sehen wie ich die Lua Scripte umbauen muss damit sie wieder gehen. | ||
+ | |||
+ | === Links === | ||
+ | |||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | ===== L298N Brushed RC Doppelregler ===== | ||
+ | Für mein 4WD Rover-Projekt brauchte ich noch einen Brushed Regler die ohne Bremse in den Rückwärtsgang wechseln. Zu erst habe ich Brushlessregler dazu umgeflasht, aber leider waren die nicht sehr haltbar. Dann hab ich mal in der Arduino-Schublade gesucht was ich noch so an Motor-Endstufen da hatte. Und fand eine L298N Platine. Der L298N hat eigentlich mit seinen 2A nicht genug Dampf für die Anwendung, aber ausprobieren geht über studieren. Also schnell einen Pro Mini aus dem Fach daneben geangelt und etwas Code geschrieben.\\ [[: | ||
+ | |||
+ | < | ||
+ | * [[# | ||
+ | * [[# | ||
+ | * [[# | ||
+ | |||
+ | <pane id=" | ||
+ | {{gallery>: | ||
+ | </ | ||
+ | <pane id=" | ||
+ | * [[banggood> | ||
+ | * [[banggood> | ||
+ | * [[banggood> | ||
+ | </ | ||
+ | <pane id=" | ||
+ | <code c L298N_DualBrushedESC.ino> | ||
+ | #define DIRECTION_M1_1 5 | ||
+ | #define DIRECTION_M1_2 6 | ||
+ | #define PWM_M1 3 | ||
+ | #define MOTOR_1 PWM_M1 | ||
+ | |||
+ | #define DIRECTION_M2_1 7 | ||
+ | #define DIRECTION_M2_2 8 | ||
+ | #define PWM_M2 9 | ||
+ | #define MOTOR_2 PWM_M2 | ||
+ | |||
+ | #define PWM_IN_1 10 | ||
+ | #define PWM_IN_2 11 | ||
+ | |||
+ | #define BACKWARD false | ||
+ | #define FORWARD true | ||
+ | |||
+ | boolean dirM1; | ||
+ | boolean dirM2; | ||
+ | |||
+ | int pwm_value_1 = 0; | ||
+ | int pwm_value_2 = 0; | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(DIRECTION_M1_1, | ||
+ | pinMode(DIRECTION_M1_2, | ||
+ | pinMode(PWM_M1, | ||
+ | | ||
+ | pinMode(DIRECTION_M2_1, | ||
+ | pinMode(DIRECTION_M2_2, | ||
+ | pinMode(PWM_M2, | ||
+ | |||
+ | stop(MOTOR_1); | ||
+ | stop(MOTOR_2); | ||
+ | |||
+ | pinMode(PWM_IN_1, | ||
+ | pinMode(PWM_IN_2, | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | pwm_value_1 = pulseIn(PWM_IN_1, | ||
+ | pwm_value_2 = pulseIn(PWM_IN_2, | ||
+ | |||
+ | pwm_value_1 = map(pwm_value_1, | ||
+ | pwm_value_2 = map(pwm_value_2, | ||
+ | |||
+ | if (pwm_value_1 < 10 && pwm_value_1 > -10) { | ||
+ | stop(MOTOR_1); | ||
+ | } else { | ||
+ | setMotor(MOTOR_1, | ||
+ | } | ||
+ | | ||
+ | if (pwm_value_2 < 10 && pwm_value_2 > -10) { | ||
+ | stop(MOTOR_2); | ||
+ | } else { | ||
+ | setMotor(MOTOR_2, | ||
+ | } | ||
+ | |||
+ | delay(20); | ||
+ | } | ||
+ | |||
+ | void stop(int motor) | ||
+ | { | ||
+ | analogWrite(motor, | ||
+ | } | ||
+ | |||
+ | void setMotor(int motor, int pwm) { | ||
+ | boolean dir; | ||
+ | |||
+ | if (pwm < 0) { | ||
+ | dir = BACKWARD; | ||
+ | pwm *= -1; | ||
+ | } else { | ||
+ | dir = FORWARD; | ||
+ | } | ||
+ | | ||
+ | if (motor == MOTOR_1) { | ||
+ | if (dirM1 != dir) { | ||
+ | setDirection(MOTOR_1, | ||
+ | } | ||
+ | setSpeed(MOTOR_1, | ||
+ | } else { | ||
+ | if (dirM2 != dir) { | ||
+ | setDirection(MOTOR_2, | ||
+ | } | ||
+ | setSpeed(MOTOR_2, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void setDirection(int motor, boolean dir) { | ||
+ | if (motor == MOTOR_1) { | ||
+ | digitalWrite(DIRECTION_M1_1, | ||
+ | digitalWrite(DIRECTION_M1_2, | ||
+ | dirM1 = dir; | ||
+ | } else { | ||
+ | digitalWrite(DIRECTION_M2_1, | ||
+ | digitalWrite(DIRECTION_M2_2, | ||
+ | dirM2 = dir; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void setSpeed(int motor, int sp) { | ||
+ | if (motor == MOTOR_1) { | ||
+ | analogWrite(PWM_M1, | ||
+ | } else { | ||
+ | analogWrite(PWM_M2, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ |