Hallo geschätzte Elektronikfreunde :) Ich entwickle gerade eine Maschine, welche zum Tranieren von Spurhünden dienen soll. Die Herausforderung darin besteht, 4 Drehteller über 4 Schrittmotoren in Bewegung zu versetzen. Da ich in der Mechanikbranche tätig bin und nur gewisse Grundlagen der Elektronik und Steuerungstechnik beherrsche, ist mein KnowHow begrenzt. Ich programmiere mit dem Arduino 1.8.5. Einiges habe ich bereits geschafft. Doch es dreht sich irgendwie nur 1 Motor. Und ich möchte alle 4 unabhängig voneinander steuern können. Auch soll das Signal über eine IR-Fernbedieunung ausgegeben werden. Kann mir da jemand bitte helfen? Mein Equipment: 4x Makeblock 42byg Stepper Motor, Makeblock MegaPi Microcontroller board, 4x Makeblock Megapi Stepper Motor Driver, Fernbedienungs-Set mit VS1838B und Breakout (Infrarot). Anbei noch mein angefangenes Programm. Herzliche Gruesse :)
Laurent B. schrieb: > Doch es dreht sich irgendwie nur 1 Motor. Und was hindert dich jetzt daran weitere 6 Zeichen (z.B. '2'..'7') zu nehmen, und die anderen 3 Motoren genau wie den ersten anzusteuern? Soucecode kann hier übrigens direkt als .txt oder .c File angehängt werden. Screenshot ist denkbar ungünstig.
:
Bearbeitet durch User
Sehr geehrter Joe.F.(easylife) Hatte ein Überlegungsfehler gemacht und die Befehle stepper.run mit 2,3,4 und die cases vergessen anzupassen. :D Jetzt funktioniert es. Wie kann ich diese per einer Infrarot Fernbedienung steuern? zB. wenn ich auf die Taste 1 drücke soll case'1' bzw. stepper1 drehen etc. ? Herzliche Gruesse
:
Bearbeitet durch User
> Wie kann ich diese per einer Infrarot Fernbedienung steuern?
"Man" kann das machen. Du solltest zunächst mal ein Programm schreiben,
dass die Signale der Fernbedienung empfängt und irgendwie auf dem
seriellen Monitor anzeigt. Damit kannst du für jede Taste den Code
ermitteln. Dann schreibst du ein Programm, dass auf eben diese Codes
reagiert.
Soweit die generelle Vorgehensweise.
Die erste Hürde wird wohl sein, herauszufinden, wie das Signal deiner
konkreten Fernbedienung codiert ist und dann eine dazu passende Library
zu finden bzw. selbst zu schreiben. Für Arduino gibt es ja fertige
Bastelkisten mit IR Fernbedienung, ich nehme daher an, dass genau dazu
passend auch Programmierbeispiele existieren.
Sehr geehrter Stefanus F. Ich habe eine Library gefunden. Das IR-Board habe ich mit dem Microcontroller verbunden. VCC, GND und I/O in PIN30 eingesteckt. Aber irgendwie funktioniert es nicht, bzw. im seriellen Monitor werden keine Codes angezeigt. Hier das Programm: #include <IRremote.h> int RECV_PIN = 30; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, DEC); irrecv.resume(); // Receive the next value } }
Frage den Autor der Library, ob er helfen möchte. Ich vermute mal, dass man irgendwo mindestens einstellen muss, welches Protokoll die Fernbedienung spricht.
Ich habe jetzt alle Protokolle eingestellt, bzw die Bekanntesten. Ich habe auch andere Fernbedienungen ausprobiert, im seriellen Monitor wird mir kein Code angezeigt. Irgendwas übersehe ich?! Hier das erweiterte Prog: #include <boarddefs.h> #include <IRremote.h> #include <IRremoteInt.h> #include <ir_Lego_PF_BitStreamEncoder.h> // Definiere Sensor Pin const int RECV_PIN = 12; // Define IR Receiver and Results Objects IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ // Serial Monitor @ 9600 baud Serial.begin(9600); // Enable the IR Receiver irrecv.enableIRIn(); } void loop(){ if (irrecv.decode(&results)){ Serial.println(results.value, HEX); switch (results.decode_type){ case NEC: Serial.println("NEC"); break; case SONY: Serial.println("SONY"); break; case RC5: Serial.println("RC5"); break; case RC6: Serial.println("RC6"); break; case DISH: Serial.println("DISH"); break; case SHARP: Serial.println("SHARP"); break; case JVC: Serial.println("JVC"); break; case SANYO: Serial.println("SANYO"); break; case MITSUBISHI: Serial.println("MITSUBISHI"); break; case SAMSUNG: Serial.println("SAMSUNG"); break; case LG: Serial.println("LG"); break; case WHYNTER: Serial.println("WHYNTER"); break; case AIWA_RC_T501: Serial.println("AIWA_RC_T501"); break; case PANASONIC: Serial.println("PANASONIC"); break; case DENON: Serial.println("DENON"); break; default: case UNKNOWN: Serial.println("UNKNOWN"); break; } irrecv.resume(); } }
Es kann durchaus sein, dass deine Fernbedienungen einen anderen Code verwenden. Weitere Fragen richtest du bestimmt besser an den Autor der Library.
Ich nutze erfolgreich an Attiny13/45 den RC5-Code, den z.B. die gerade bei P. Im Angebot erhälliche Gigaset RC20 sendet. Mein Code ist Ass, sollte aber als Inline einzubunden sein, TimerInt anpassen auf deinen Takt, ist jetzt 1/1.2MHz. Alternativ könnte ich eine Testschaltung aus einem µC+IR-Empfäger zur Verfügung stellen für den guten Zweck. Die gibt an 4 Pins 4 Bit des Tastencodes aus.
Ja wäre nett. Ich habe jetzt noch eine Universal Fernbedieunung gekauft (Schwaiger 3801) , aber es wird mir immer noch kein Code angezeigt im seriellen Monitor. :( Am Programm sollte doch alles i.O. sein? Gruesse
Wenn du mit dem C-Code nicht zum Erfolg kommst, (du hast ja einen neuen Thread aufgemacht wegen seriellem Monitor), oder der Arduino überlastet ist mit der Aufgaben, melde dich in 15 Tagen. Im Urlaub kann ich nichts schicken. Auf Uni-FB ist meist Gerätetaste 1=TV1 der RC5, den ich verwende.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.