Guter Hinweis, da muss man noch mal schauen.
Ja, das mit den Werten ist korrekt, ich ändere das oben noch einmal.
Danke wkrug!
MfG
- - - Aktualisiert - - -
Wenn mehr nicht benötigt wird, sicher die einfachere Variante.
Druckbare Version
Code sollte in den Code Tags sein, dann ist es lesbar.
als Beispiel:
Zum Thema, wie du den Switch Befehl ändern musst. Du musst verstehen wie Switch funktioniert.Code:Hier steht der Code
Die Variable bei Switch muss eine Integervariable sein (nicht Float o.Ä.), dadurch hast du immer ganze Zahlen. Der Switch Befehl kontrolliert die angegebene Variable auf den darin enthaltenen Wert und springt zum richtigen Case. Steht z.B. in der Variable eine 1, wird zum "Case 1" gesprungen. Sollte die Zahl keinen Case zugeordnet sein (z.B. Variable=3), wird zum "default" gesprungen. Default sollte immer eingebaut werden, auch wenn nichts darin steht. Das switch wird nach jedem Break abgebrochen. Solltest du kein Break verwenden wird in die nächste Case Bedingung gesprungen. Z.B. du vergisst bei Case 1 das Break und in der Variable steht "1" drinnen, wird "case 1" ausgeführt und geht danach weiter zu "case 2".Code:switch (variable)
{
case 1: Hier steht der Code für Auswahl 1
break;
case 2: Hier steht der Code für Auswahl 2
break;
default:
}
Als Variable kannst du jede Ganzzahlvariable nehmen, also auch z.B. einen Eingangsport. Wenn du in PINB z.B. PB0 und PB1 auf 1 hast, wird direkt in Case 3 gesprungen (wenn PINB bei der Variable angegeben ist). Achte aber darauf das du nur die Eingänge maskierst.
Ich hoffe es ist so verständlich.
MfG Hannes
Hallo Moppi,
unheimlich Nett von Dir. Danke
Aber das wird mit mir nichts.
Man gibt ja ungern zu, das man in gewissen Bereichen blöd ist.
Mein Problem ist mein Gehirn. (Stromunfall, kann kaum lernen, vergesse neue Sachen schnell. Alles `Alte`ist noch da. Aber da hatte ich noch keinen Arduino)
Deshalb ist es wohl doch besser, ich nehme 2 Attiny je Bot. Der Übersichtlichkeit halber. Habe ich auch noch, allerdings in SMD. Dazu muss der Code schon stehen!(Nach dem verlöten ist Schicht.)
Zum flashen habe ich mir eine Fassung gebaut. Drunter ist eine 8 Pol Fassung gelötet. Die passt in die ATTiny Fassung für bedrahtete auf den UNO zum Programmieren.
Also ganz blöde bin ich nun auch nicht. Das sind mir nur zuviele Unbekannte.
Anhang 34573
Mit der While Schleife. Das hat den Vorteil, das man nicht gleichzeitig Vor/Rück bei ATTiny 1 schalten kann. Und nicht gleichzeitig rechts/links bei ATTiny 2. Schon aber Vor/Rück bei ATTiny 1 und Rechts/Links bei Attiny 2. Damit umgehe ich doch mein Unvermögen ziemlich locker.
Ich scheiter jetzt schon am sketch daran, das der Fehler mit der Deklarierung von > if (case '2': ) < für mich unklar ist.
if (case'1':)
{
digitalWrite(Motor_1, HIGH);//Vorwärts
digitalWrite(Motor_2, LOW);
}
else
{
digitalWrite(Motor_1, LOW);
digitalWrite(Motor_2, LOW);
}
{
if (case '2':)
{
digitalWrite(Motor_1, LOW);//Rückwärts
digitalWrite(Motor_2, HIGH);
}
else
{
digitalWrite(Motor_1, LOW);
digitalWrite(Motor_2, LOW);
}
Arduino: 1.8.10 (Windows 7), Board: "Arduino/Genuino Uno"
C:\Users\Kellerassel\Documents\Arduino\Wein__ben\W ein__ben.ino: In function 'void loop()':
Wein__ben:84:5: error: expected primary-expression before 'case'
if (case'1':)
^~~~
Wein__ben:84:5: error: expected ')' before 'case'
Wein__ben:95:5: error: expected primary-expression before 'case'
if (case '2':)
^~~~
Wein__ben:95:5: error: expected ')' before 'case'
Wein__ben:104:1: error: expected '}' at end of input
}
^
Wein__ben:104:1: error: expected '}' at end of input
Mehrere Bibliotheken wurden für "Servo.h" gefunden
Benutzt: C:\Program
exit status 1
expected primary-expression before 'case'
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Oh
Achim
Hallo Achim,
switch ersetzt if (...) else ...
aus dem
Code:if(variable == 1){
...
}
else{
...
}
kann man diesen machen
Code:switch (variable){
case 1:
...
case ...
}
Für Deinen Beispielcode kann man das etwa so machen
Code:switch (...){
case 1:digitalWrite(Motor_1, HIGH);//VorwärtsdigitalWrite(Motor_2, LOW);
break;
case 2:digitalWrite(Motor_1, LOW);//Rückwärts}
digitalWrite(Motor_2, HIGH);
break;
Mach es aber bitte so, wie es für Dich besser ist.
MfG
:Weihnacht
Danke Euch Allen!
Nun dachte ich, es wäre Einfach.
War aber nichts.
Dieser Code schaltet so lange man den Taster hält:
Dieser nicht???:Code:*/
const int ledPin_1 = 8;
const int ledPin = 13;
const int Pin = 6; // Taster
const int Pin_1 = 7; // Taster
void setup()
{
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(13, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
int Taster = digitalRead(6);//Taster A
while (Taster == 1)//while the button is pressed
{
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13, LOW);
Taster = digitalRead(6); //refresh value of variable
}
{
int Taster_1 = digitalRead(7);//Taster B
while (Taster_1 == 1)//while the button is pressed
{
digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
Taster_1 = digitalRead(7); //refresh value of variable
}
}
}
Wo ist der Fehler?Code:const int Motor_1 = 10; //Motor
const int Motor_2 = 11;
const int Fern_3 = 4; //Fern Vor
const int Fern_1 = 5; //Fern Rück
const int FERNON = 13;
int Start = 12; // start Motor
void setup() {
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(12, OUTPUT);//Start
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(Start, HIGH);
digitalWrite(FERNON, HIGH);
{
int Taster = digitalRead(Fern_3);//Fern Vor
while (Taster == 1)//while the button is pressed
{
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(100);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
Taster = digitalRead(Fern_3); //refresh value of variable
}
{
int Taster_1 = digitalRead(Fern_1);//Fern vor
while (Taster_1 == 1)//while the button is pressed
{
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
delay(100);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
Taster_1 = digitalRead(Fern_1); //refresh value of variable
}
}
}
}
Wieso fehlt bei mir das Zeichen Codeblock setzen??
so ist er dann richtig
:WeihnachtCode:const int Motor_1 = 10; //Motor
const int Motor_2 = 11;
const int Fern_3 = 4; //Fern Vor
const int Fern_1 = 5; //Fern Rück
const int FERNON = 13;
int Start = 12; // start Motor
void setup() {pinMode(10, OUTPUT);pinMode(11, OUTPUT);pinMode(4, INPUT);pinMode(5, INPUT);pinMode(12, OUTPUT);//StartpinMode(13, OUTPUT);}
void loop()
{digitalWrite(Start, HIGH);digitalWrite(FERNON, HIGH);
int Taster = digitalRead(Fern_3);//Fern Vorwhile (Taster == 1)//while the button is pressed{digitalWrite(10, HIGH);digitalWrite(11, LOW);delay(100);digitalWrite(10, LOW);digitalWrite(11, LOW);Taster = digitalRead(Fern_3); //refresh value of variable}
int Taster_1 = digitalRead(Fern_1);//Fern vorwhile (Taster_1 == 1)//while the button is pressed{digitalWrite(11, HIGH);digitalWrite(10, LOW);delay(100);digitalWrite(11, LOW);digitalWrite(10, LOW);Taster_1 = digitalRead(Fern_1); //refresh value of variable}}
Das tut mir Leid!!
Es ist nicht der Sketch.
Den Ersten habe ich am UNO getestet. Den 2. an dem Bot mit Promini.
Der Festspannungsregler bricht kurz ein.
Es ist der TS 7805CZ. Der sollte laut Manual keine weitere Beschaltung brauchen, wenn der Weg kurz ist.
War wohl nix.
Entschuldigung. Morgen mache ich weiter!
Achim, der Weihnachten gemischt kommen sieht
Versuchs mal mit ner richtigen Stromversorgung.
Diese 9V-Blöcke gehn für Radios oder nen paar LED's, aber für Motoren oder Servos eher nicht.
Die liefern einfach die hohen Ströme nicht.
Hallo,
in der zwischenzeit habe ich die Prominis und die Silberdrähte ausgelötet.
Überall aus ex Projekten die Attiny gezogen und wenigstens die VOR/RÜCKwärtsgeschichte hingekriegt.
Ja, überlegen wäre gut gewesen! 9Volt Block bedeutet 6 Minizellen.
Der Anlaufstrom eines DC Motors kann bis zum neunfachen des Betriebsstroms bedeuten.
Deshalb habe ich jetzt die Steuerung mit ner Schottky Diode getrennt und je einen Goldcap 1Farad montiert. Davon kann die Schaltung ja fast alleine Leben.
Damit die Schaltung nicht "flattert", musste ich die Pause auf mind. 200mSec hochsetzen.
Nun dachte ich, das läuft jetzt.
War aber nichts.
Ich bekomme den Scetch für den ATtiny 85 nicht hin.
Servo H geht natürlich nicht. Dann hatte ich Softwareservo getestet, lief auch nicht. Jetzt bin ich bei :
#include <Servo8Bit.h>
Servo8Bit myservo;
int pos = 0;
const int Fern_0=3;//Fern Rechts
const int Fern_2=4;//Fern Links
void setup() {
myservo.attach(0); // Servo auf DigitalPin 0
pinMode(3, INPUT);
pinMode(4, INPUT);
}
void loop()
{
int Taster = digitalRead(Fern_0);//Fern Rechts
while (Taster == 1)//while the button is pressed
{
myservo.write(60);
delay(300);
myservo.write(90);
delay(100);
Taster = digitalRead(Fern_0); //refresh value of variable
}
{
int Taster_1 = digitalRead(Fern_2);//Fern vor
while (Taster_1 == 1)//while the button is pressed
{
myservo.write(120);
delay(300);
myservo.write(90);
delay(100);
Taster_1 = digitalRead(Fern_2); //refresh value of variable
}
}
}
Wieso fehlt mir die Möglichkeit Codeblöcke zu setzen?
Tut mir Leid!
Was fehlt?
Manchmal frage ich mich, ob ich noch alle Tassen im Schrank habe. Bloß für die Weihnachtsbande so einen Nerv zu haben. Aber dann fällt mir mein ü80 Vater ein. Er kommt mit seinem neuen 160Ps Flitzer an. Steigt aus und geht zur Pforte. (Wie jedes Jahr)Das haben garantiert meine Töchter(18+27) gesehen und schalten den Überwachungsmonitor ein. Er kommt, wie jedes Jahr nur zu Weihnachten vorbei. Latscht an einer weißroten Kette mit der Aufschrift: "Klingeln, Kette ziehen" vorbei bis zum Rolltor. Das ist motorisch angetrieben. Nun versucht er zu schieben,zu drücken. Die Töchter gaggern sich einen. Er sieht sich um, und wiederholt seine Aktivitäten bis einer drinnen auf die Taste drückt.
Nun fängt er an zu reden bis er wieder verschwindet. Wer alles Krank ist, wieso die Nachbarn kein Gift streuen und sein Weg verunkrautet, was er gestern gemacht hat vorgestern. Keiner kommt zu Wort. Er übersabbelt alles.
Beim Essen hören wir gerne ein Hörbuch. Die Herdmanns oder Mrs. Moose oder ähnlich. Geht aber nicht, denn er hat längst den Ton übernommen und erzählt seinen Kram.
Um das zu brechen, brauche ich etwas um alle Sinne zu beschäftigen, abzulenken. Dummerweise fiel meine Wahl dieses Jahr auf diese dusseligen Rob`s(Oder ich Dussel)
Wenn da alle auf Tasten drücken und es nur 2 Frequenzen gibt, dachte ich. Dann gibt es geiles Chaos. Dann fällt ihm nichts ein. Wir hatten schon vieles. Unter Anderem Emaillieren, Hexbug Hindernisstour.
Ich gestehe, einmal pro Woche rufe ich ihn an, melde mich. Dann lege ich den Hörer hin und sage nur immer ja, oh,äh, weiß nicht, ja gut usw. Nach einer Stunde ist er durch und sagt: ja, danke für den Anruf und legt auf.
Achim
Danke nochmnal für die Hilfe!
Das Projekt habe ich um 1 Jahr vertagt.
Weihnachten läuft so wie es ist!
Das " Fahrzeug " ist Ok.
Aber der Rest?
Die Batterie ist echt zu klein. Das Ärgerliche ist nur, das der Fernsteuerempfänger 5 Volt braucht. Wenn ich einen Lipo verwenden würde, bräuchte ich ein Step Up Modul.
Der Platz wäre da. Die L 293D Brücke ist auch nicht das Gelbe. Hier baue ich lieber 4 Transistoren ein. Braucht weniger Platz und startet bei weniger Spannung. Zwischen Fernsteuerung und ATtiny wäre wohl ein Inverter nicht schlecht. Oft lief der LOOp trotz Whileschleife einfach ständig durch.
Wirklich schönen Dank und allen viel Ruhe und ein nettes Auskommen
Achim