Go Down

Topic: Hardware Arduino (Read 2143 times) previous topic - next topic

Serfofreund

Als blutiger Anfänger möchte ich Wissen, ob beim Testen eines aufgespielten Sketches immer alle Taster/Servos angeschlossen sein müssen?
Ich habe folgendes Problem:
Ich möchte sechs Servos getrennt über Taster ansteuern. Die sechs Servos sollen langsam laufen...Habe das Problem "einfach" über "Delay" gelöst.
Wenn ich den Sketch nur für einen Servo auf den Arduino übertrage funktioniert der Test einwandfrei.
Der geschriebene Sketch für sechs Servos wird auch auf den Arduino übertragen, aber er funktioniert nicht beim Testen. Hier habe ich aber nur zwei Taster und ein Servo angeschlossen....
Muss alles angeschlossen sein ?
Ist der Zyklus des Arduinos zu langsam  oder wo ist mein Denkfehler? Delay ????
Ich Danke schon einmal für die Antworten.

combie

Keine Ahnung, was du falsch machst...

Ich sehe keine Servos, kein Schaltplan, kein Programm.

Bedenke:
Du siehst das, was ich nicht sehe.
Das größte Problem, ist die Wahl der richtigen Gedanken.

Serfofreund

#2
Jan 17, 2018, 12:16 pm Last Edit: Jan 17, 2018, 01:54 pm by uwefed
Code: [Select]
#include <Servo.h>

int tasterPin1 = 2; //Taster1 an Pin 2 angeschlossen //92 Grad
int tasterPin2 = 3; //Taster2 an Pin 3 angeschlossen //70 Grad
int tasterPin3 = 4; //Taster3 an Pin 4 angeschlossen //92 Grad
int tasterPin4 = 5; //Taster4 an Pin 5 angeschlossen //70 Grad
int tasterPin5 = 6; //Taster5 an Pin 6 angeschlossen //92 Grad
int tasterPin6 = 7; //Taster6 an Pin 7 angeschlossen //70 Grad
int tasterPin7 = 8; //Taster7 an Pin 8 angeschlossen //92 Grad
int tasterPin8 = 9; //Taster8 an Pin 9 angeschlossen //70 Grad
int tasterPin9 = 10; //Taster9 an Pin 10 angeschlossen //92 Grad
int tasterPin10 = 11; //Taster10 an Pin 11 angeschlossen //70 Grad
int tasterPin11 = 12; //Taster11 an Pin 12 angeschlossen //92 Grad
int tasterPin12 = 13; //Taster12 an Pin 13 angeschlossen //70 Grad


int tasterStatus1, tasterStatus2, tasterStatus3, tasterStatus4, tasterStatus5, tasterStatus6, tasterStatus7,
tasterStatus8,tasterStatus9, tasterStatus10, tasterStatus11, tasterStatus12, tasterStatus13;


Servo meinServo;
Servo meinServo2;
Servo meinServo3;
Servo meinServo4;
Servo meinServo5;
Servo meinServo6;

void setup()
{
pinMode(tasterPin1, INPUT); //tasterPin1 (Pin 2) wird als INPUT definiert
pinMode(tasterPin2, INPUT); //tasterPin2 (Pin 3) wird als INPUT definiert
pinMode(tasterPin3, INPUT); //tasterPin1 (Pin 4) wird als INPUT definiert
pinMode(tasterPin4, INPUT); //tasterPin2 (Pin 5) wird als INPUT definiert
pinMode(tasterPin5, INPUT); //tasterPin1 (Pin 6) wird als INPUT definiert
pinMode(tasterPin6, INPUT); //tasterPin2 (Pin 7) wird als INPUT definiert
pinMode(tasterPin7, INPUT); //tasterPin1 (Pin 8) wird als INPUT definiert
pinMode(tasterPin8, INPUT); //tasterPin2 (Pin 9) wird als INPUT definiert
pinMode(tasterPin9, INPUT); //tasterPin1 (Pin 10) wird als INPUT definiert
pinMode(tasterPin10, INPUT); //tasterPin2 (Pin 11) wird als INPUT definiert
pinMode(tasterPin11, INPUT); //tasterPin1 (Pin 12) wird als INPUT definiert
pinMode(tasterPin12, INPUT); //tasterPin2 (Pin 13) wird als INPUT definiert



meinServo.attach(14); //Servomotor wurde an Pin 14 (A00) angeschlossen
meinServo2.attach(15); //Servomotor wurde an Pin 15 (A01) angeschlossen
meinServo3.attach(16); //Servomotor wurde an Pin 16 (A02) angeschlossen
meinServo4.attach(17); //Servomotor wurde an Pin 17 (A03) angeschlossen
meinServo5.attach(18); //Servomotor wurde an Pin 18 (A04) angeschlossen
meinServo6.attach(19); //Servomotor wurde an Pin 19 (A05) angeschlossen

}

void loop()
{
tasterStatus1 = digitalRead(tasterPin1); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus2 = digitalRead(tasterPin2); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus3 = digitalRead(tasterPin3); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus4 = digitalRead(tasterPin4); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus5 = digitalRead(tasterPin5); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus6 = digitalRead(tasterPin6); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus7 = digitalRead(tasterPin7); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus8 = digitalRead(tasterPin8); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus9 = digitalRead(tasterPin9); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus10 = digitalRead(tasterPin10); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus11 = digitalRead(tasterPin11); // Tasterstatus wird als digitaler Kontakt festgelegt
tasterStatus12 = digitalRead(tasterPin12); // Tasterstatus wird als digitaler Kontakt festgelegt




if (tasterStatus1 == 0)
{
meinServo.write(70); //Dreht nach rechts
delay(200);
meinServo.write(73); //Dreht nach rechts
delay(200);
meinServo.write(76); //Dreht nach rechts
delay(200);
meinServo.write(79); //Dreht nach rechts
delay(200);
meinServo.write(82); //Dreht nach rechts
delay(200);
meinServo.write(85); //Dreht nach rechts
delay(200);
meinServo.write(92); //Dreht nach rechts
delay(50);
}

if (tasterStatus3 == 0)
{
meinServo2.write(70); //Dreht nach rechts
delay(200);
meinServo2.write(73); //Dreht nach rechts
delay(200);
meinServo2.write(76); //Dreht nach rechts
delay(200);
meinServo2.write(79); //Dreht nach rechts
delay(200);
meinServo2.write(82); //Dreht nach rechts
delay(200);
meinServo2.write(85); //Dreht nach rechts
delay(200);
meinServo2.write(92); //Dreht nach rechts
delay(50);
}

if (tasterStatus5 == 0)
{
meinServo3.write(70); //Dreht nach rechts
delay(200);
meinServo.write(73); //Dreht nach rechts
delay(200);
meinServo3.write(76); //Dreht nach rechts
delay(200);
meinServo3.write(79); //Dreht nach rechts
delay(200);
meinServo3.write(82); //Dreht nach rechts
delay(200);
meinServo3.write(85); //Dreht nach rechts
delay(200);
meinServo3.write(92); //Dreht nach rechts
delay(50);
}

if (tasterStatus7 == 0)
{
meinServo4.write(70); //Dreht nach rechts
delay(200);
meinServo4.write(73); //Dreht nach rechts
delay(200);
meinServo4.write(76); //Dreht nach rechts
delay(200);
meinServo4.write(79); //Dreht nach rechts
delay(200);
meinServo4.write(82); //Dreht nach rechts
delay(200);
meinServo4.write(85); //Dreht nach rechts
delay(200);
meinServo4.write(92); //Dreht nach rechts
delay(50);
}

if (tasterStatus9 == 0)
{
meinServo5.write(70); //Dreht nach rechts
delay(200);
meinServo5.write(73); //Dreht nach rechts
delay(200);
meinServo5.write(76); //Dreht nach rechts
delay(200);
meinServo5.write(79); //Dreht nach rechts
delay(200);
meinServo5.write(82); //Dreht nach rechts
delay(200);
meinServo5.write(85); //Dreht nach rechts
delay(200);
meinServo5.write(92); //Dreht nach rechts
delay(50);
}

if (tasterStatus11 == 0)
{
meinServo6.write(70); //Dreht nach rechts
delay(200);
meinServo6.write(73); //Dreht nach rechts
delay(200);
meinServo6.write(76); //Dreht nach rechts
delay(200);
meinServo6.write(79); //Dreht nach rechts
delay(200);
meinServo6.write(82); //Dreht nach rechts
delay(200);
meinServo6.write(85); //Dreht nach rechts
delay(200);
meinServo6.write(92); //Dreht nach rechts
delay(50);
}




if (tasterStatus2 == 0)
{
meinServo.write(92); //Dreht nach links
delay(200);
meinServo.write(89); //Dreht nach links
delay(200);
meinServo.write(86); //Dreht nach links
delay(200);
meinServo.write(83); //Dreht nach links
delay(200);
meinServo.write(80); //Dreht nach links
delay(200);
meinServo.write(77); //Dreht nach links
delay(200);
meinServo.write(70); //Dreht nach links
delay(200);
}

if (tasterStatus4 == 0)
{
meinServo2.write(92); //Dreht nach links
delay(200);
meinServo2.write(89); //Dreht nach links
delay(200);
meinServo2.write(86); //Dreht nach links
delay(200);
meinServo2.write(83); //Dreht nach links
delay(200);
meinServo2.write(80); //Dreht nach links
delay(200);
meinServo2.write(77); //Dreht nach links
delay(200);
meinServo2.write(70); //Dreht nach links
delay(200);
}

if (tasterStatus6 == 0)
{
meinServo3.write(92); //Dreht nach links
delay(200);
meinServo3.write(89); //Dreht nach links
delay(200);
meinServo3.write(86); //Dreht nach links
delay(200);
meinServo3.write(83); //Dreht nach links
delay(200);
meinServo3.write(80); //Dreht nach links
delay(200);
meinServo3.write(77); //Dreht nach links
delay(200);
meinServo3.write(70); //Dreht nach links
delay(200);
}

if (tasterStatus8 == 0)
{
meinServo4.write(92); //Dreht nach links
delay(200);
meinServo4.write(89); //Dreht nach links
delay(200);
meinServo4.write(86); //Dreht nach links
delay(200);
meinServo4.write(83); //Dreht nach links
delay(200);
meinServo4.write(80); //Dreht nach links
delay(200);
meinServo4.write(77); //Dreht nach links
delay(200);
meinServo4.write(70); //Dreht nach links
delay(200);
}

if (tasterStatus10 == 0)
{
meinServo5.write(92); //Dreht nach links
delay(200);
meinServo5.write(89); //Dreht nach links
delay(200);
meinServo5.write(86); //Dreht nach links
delay(200);
meinServo5.write(83); //Dreht nach links
delay(200);
meinServo5.write(80); //Dreht nach links
delay(200);
meinServo5.write(77); //Dreht nach links
delay(200);
meinServo5.write(70); //Dreht nach links
delay(200);
}

if (tasterStatus12 == 0)
{
meinServo6.write(92); //Dreht nach links
delay(200);
meinServo6.write(89); //Dreht nach links
delay(200);
meinServo6.write(86); //Dreht nach links
delay(200);
meinServo6.write(83); //Dreht nach links
delay(200);
meinServo6.write(80); //Dreht nach links
delay(200);
meinServo6.write(77); //Dreht nach links
delay(200);
meinServo6.write(70); //Dreht nach links
delay(200);
}


delay(100);

}

Serfofreund

Die/Der Taster/Servo sind nach "Standart" angeschlossen...


HotSystems

#4
Jan 17, 2018, 12:34 pm Last Edit: Jan 17, 2018, 12:36 pm by HotSystems
Hallo, setze deinen Sketch bitte in Code-Tags, Schaltfläche </> oben links im Editorfenster, das kannst du auch nachträglich noch mache.
Danach können auch alle den Sketch vernünftig lesen.
So geht das garnicht.

Und was meinst du mit "Standart angeschlossen" ?
Was glaubst du wieviel Möglichkeiten es gibt, die Dinge anzuschließen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

michael_x

Quote
Die/Der Taster/Servo sind nach "Standart" angeschlossen...
Taster-Standard wäre INPUT_PULLUP, das hast du nicht gemacht ;)
Hast du externe Pullup-Widerstände verwendet?


Quote
Habe das Problem "einfach" über "Delay" gelöst.
Hast du mal geschätzt (zusammengezählt) wie selten du deine Tasterstellungen prüfst?

Serfofreund

Ich merke schon, hier werden Anfänger nicht erwünscht....
Ich bedanke mich für meine einfache Anfrage....
Erwarte keine Antworten mehr!

HotSystems

Ich merke schon, hier werden Anfänger nicht erwünscht....
Ich bedanke mich für meine einfache Anfrage....
Erwarte keine Antworten mehr!

Und was soll das nun wieder ?
Auch Anfänger dürfen sich an die Gepflogenheiten hier im Forum halten.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

guntherb

Ich merke schon, hier werden Anfänger nicht erwünscht....
Ich bedanke mich für meine einfache Anfrage....
Erwarte keine Antworten mehr!

Keine Geduld mehr, die jungen Leute.....

die wichtigsten Hinweise sind schon genannt:
Taster ohne externen Pullup funktionieren nur, wenn der pin als INPUT_PULLUP deklariert ist.
Wenn deine Taster ohne pullup angeschlossen sind, und die Pins alle als low eingelesen werden, (was durchaus passieren kann), werden die Taster ca alle 14 sekunden mal abgefragt.

Deine Fehlerbeschreibung "aber er funktioniert nicht beim Testen." läßt viel Raum für Interpretationen offen. Etwas genauer wäre echt hilfreich. Ebenso wie die Aussage "nach Standard angeschlossen" nicht hilft, weil wir deinen Standard nicht kennen.
Grüße
Gunther

uwefed

#9
Jan 17, 2018, 01:58 pm Last Edit: Jan 17, 2018, 01:59 pm by uwefed
Ich merke schon, hier werden Anfänger nicht erwünscht....
Ich bedanke mich für meine einfache Anfrage....
Erwarte keine Antworten mehr!
Was ist jetzt?
Wir waren weder böse noch gemein noch beleidigend.
Wer un Hilfe bittet kann nicht erwarten, daß hier Hellseher sind die Wissen, was man gemacht hat.
Darum wurdest Du um mehr Infos gefragt.

Wenn Dir das aber schon zu viel ist, dann hast Du recht: es ist besser Du fragst hier nichts mehr und machst mal Erfahrung mit den wirklich bösen Gepflogenheiten in anderen Foren.

Grüße Uwe

michael_x

Quote
Wir waren weder böse noch gemein noch beleidigend
Haben auf jeden Fall kein schlechtes Gewissen deswegen ;)

Da Serfofreund ja schon weg ist, kann man diesen Thread auch schön für OT-Gequatsche verwenden:

Bei uns hat mal ein Kandidat in einem Bewerbungsgespräch gefragt, ob hier gemobbt würde. Tja, was soll man da antworten. (Er ist sicherheitshalber nicht genommen worden) 

guntherb

Du weißt ja: ,
>> 9 von 10 Befragten finden mobbing gut. <<
:o
Grüße
Gunther

volvodani

Was ich aber noch seltsamer finde 12:00 Frage eingestellt.
=> rückmeldung erhalten präziser zu sein und Infos zugeben
=> 12:37 sich verabschiedet?

Seltsam Seltsam

0x2B | ~ 0x2B = 0xFF  
(Shakespeare)

HotSystems

Was ich aber noch seltsamer finde 12:00 Frage eingestellt.
=> rückmeldung erhalten präziser zu sein und Infos zugeben
=> 12:37 sich verabschiedet?
es hat heute eben keiner mehr Zeit. ;)
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Tommy56

Mir drängt sich der Verdacht auf, es war von vorn herein als Trollerei angelegt.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up