hallo zusammen , hier ist er wieder. Euer verirter Neuling. habe heute den ganzent Tag damit verbracht eine einfache Schaltung mit einem CD4094 und 8LED zum laufen zu bringen. Es sollen nacheinander alles LED's an den Ausgängen zum leuchten gebracuht werden und einmal alle an und eimal alle aus. Nach langen suchen im WEB bin ich auf ein vielversprechendes Sketch gestossen: https://entwickler.de/online/development/arduino-iot-dummies-124603.html cih habe lediglich die function loop wie folgt angepasst: void loop() { // put your main code here, to run repeatedly: int i; for( int i = 11; i > 0; i--) { switch(i) { case 1: datenwort=B10000000; break; case 2: datenwort=B01000000; break; case 3: datenwort=B00100000; break; case 4: datenwort=B00010000; break; case 5: datenwort=B00001000; break; case 6: datenwort=B00000100; break; case 7: datenwort=B00000010; break; case8: datenwort=B00000001; break; case 9: datenwort=B00000000; break; case 10: datenwort=B11111111; break; } delay(1000); } } Ich bekommen folgenden Ablauf als ausgabe: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 10 H H H H H H H H 9 L L L L L L L L 8 L L L L L L L L 7 L L L L H L L L 6 L L L H L L L L 5 L L H L L L L L 4 L H L L L L L L 3 H L L L L L L H 2 L L L L L L H L 1 L L L L L L L L man beachte das Q6 nur in der ersten Reihe H ist und in Reihe 8 Q1 und Q8 H haben. Kann sich da jemand einen reim drauf machen?
@ Gundelputz (Gast) > SP6.JPG Deine LEDs sind verpolt. >alle an und eimal alle aus. Nach langen suchen im WEB bin ich auf ein >vielversprechendes Sketch gestossen: WOW, dafür muss man sooo lange suchen, anstatt mal ein paar Minuten selber zu denken? >man beachte das Q6 nur in der ersten Reihe H ist und in Reihe 8 Q1 und >Q8 H haben. Ja und? >Kann sich da jemand einen reim drauf machen? Wo liegt das Problem. Das hast DU doch ins Programm geschrieben! Ach nee, du hast nur kopiert aber das "Sektch" nicht eine Sekunde KAPIERT! :-(
das Programm ist keines, es wird sich zum einen nicht compilieren lassen (wo ist z.B. B11111111 definiert?), zum anderen macht es auch rein gar nichts was eine LED zum Leuchten bringen würde!
Wenn hier jemand Hilfe sucht während es schön wenn er oder sie Antworten bekommt und nicht irgend einen nichtssagende Kommentar. Ihr habt alles erhalten um zu Antworten. Würde sich das Programm nicht kompilieren lassen wurde auch kenne Ausgabe erscheinen.
Falk B. schrieb: > Deine LEDs sind verpolt. Danke ist aber nur in der Darstellung so. Hab mich da vertan. Falk B. schrieb: > Ja und? Ja und was? Falk B. schrieb: > Wo liegt das Problem. Das hast DU doch ins Programm geschrieben! Ach an welcher stelle habe ich in der funktion geschrieben das zwei LED's leuchten sollen? > nee, du hast nur kopiert aber das "Sektch" nicht eine Sekunde KAPIERT! > :-( Es ist schon sehr herrablassend zu behaupten ich hätte alles nur kopiert und zu dem keine Ahnung was da im Programm vorgeht. Ich lasse mich für diesen einen Moment mal auf dein Niveau herrab und möchte dir sagen das ich glaube du hast die Frage nicht verstanden und nur die Hälfte gelesen. Ich bin in einigen Foren unterwegs und es gibt immer User die nicht im Stande sind einen konstruktiven Beitrag zu leisten. Mein anliegen ist es zu verstehen was passiert und dazu bediene ich mich auch gerne mal einer vorhandenen Routine. Wenn sie gut ist dann gilt mein Lob und Dank dem Entwickler andernfalls wird sie angepasst oder verworfen. Hast du schon mal davon gehört das man das Rad nicht neu erfinden muss. Walter S. schrieb: > das Programm ist keines, es wird sich zum einen nicht compilieren lassen > (wo ist z.B. B11111111 definiert?), > zum anderen macht es auch rein gar nichts was eine LED zum Leuchten > bringen würde! Auch du hast offensichtlich nicht richtig gelesen. Gundelputz schrieb: > habe lediglich die function loop wie folgt angepasst: Ich kann ohe Probleme das Programm in den Arduino Uno übertragen. hier noch mal der ganze Code: #include "TimerOne.h" #define sclockPin 1 // dataPin is owned by system #define sdataPin 2 #define sstrobePin 3 byte datenwort; bool mussSenden; byte sendeGerade; int i; void setup() { // put your setup code here, to run once: Timer1.initialize(1500); // 2 KhZ Arbeitstakt Timer1.attachInterrupt(intSr); sendeGerade=0; mussSenden=0; datenwort=B11111111; pinMode(sclockPin, OUTPUT); pinMode(sdataPin, OUTPUT); pinMode(sstrobePin, OUTPUT); } void intSr() { digitalWrite(sstrobePin, LOW); if(mussSenden==1) { if(sendeGerade==7) {// Strobe senden, resetten digitalWrite(sstrobePin, HIGH); sendeGerade=0; } digitalWrite(sclockPin, LOW); mussSenden=0; } else {// Sende Nutzdaten digitalWrite(sclockPin, HIGH); mussSenden=1; // Ermittle Daten byte mySendBit=datenwort&(1<<sendeGerade); if(mySendBit==0) digitalWrite(sdataPin, LOW); else digitalWrite(sdataPin, HIGH); sendeGerade++; } } void loop() { // put your main code here, to run repeatedly: int i; for( int i = 11; i > 0; i--) { switch(i) { case 1: datenwort=B10000000; break; case 2: datenwort=B01000000; break; case 3: datenwort=B00100000; break; case 4: datenwort=B00010000; break; case 5: datenwort=B00001000; break; case 6: datenwort=B00000100; break; case 7: datenwort=B00000010; break; case8: datenwort=B00000001; break; case 9: datenwort=B00000000; break; case 10: datenwort=B11111111; break; } delay(1000); } } aber zurück zu meiner eigendlichen Fragestellung. Ich vermute das bei der Übertragung zwei Bits vorran gestellt werden Was evtl. auf ein Paritätsbit hinweisen könnte. ich finde in dem Sketch und im TimerOne.h keinen hinweis hierfür. Ich habe das ganze mal mit Tastern nachgestellt(Bit für Bit) ohne Arduino und da funktioniert es ohne Probleme. Somit möchte ich dne CD4094 weitestgehenst ausschliessen. Eine verringerung des Taktes hat auch nichts gebracht. Hat noch irgend wer eine Idee?
hier noch mal als "Beweis" das ich nicht ganz so inkompetent bin wie oben dargestellt ein winziges Sketch(ohne Fremde Hilfe) das genau das macht was es soll. int freigabe1 = 11; int tackt1 = 12; int bit1 = 13; void setup() { // put your setup code here, to run once: pinMode(freigabe1,OUTPUT); pinMode(tackt1,OUTPUT); pinMode(bit1,OUTPUT); } void loop() { // put your main code here, to run repeatedly: for(int i = 10; i >0; i--) { digitalWrite(tackt1,LOW); digitalWrite(freigabe1,LOW); digitalWrite(bit1,LOW); digitalWrite(tackt1,HIGH); } for(int l = 4; l >0; l--) { digitalWrite(tackt1,LOW); digitalWrite(freigabe1,HIGH); digitalWrite(bit1,HIGH); digitalWrite(tackt1,HIGH); delay(1000); digitalWrite(tackt1,LOW); digitalWrite(freigabe1,HIGH); digitalWrite(bit1,LOW); digitalWrite(tackt1,HIGH); delay(1000); } }
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.