Go Down

Topic: storing op ledjes via arduino (Read 828 times) previous topic - next topic

manfredwetzels

Hoi

ik ben met de arduino bezig om mijn modelbaan aan te sturen dus de wissels te bedienen
nu het de bedoeling dat als ik een schakelaar met 3 standen  (aan uit aan )naar links zet de servo naar 105 graden gaat en het rode LEDje gaat branden zet ik de schakelaar naar rechts servo naar 75 graden en het groene ledje moet gaan branden
in de sketch wat ik heb geschreven werkt het in principe goed als ik een servo aansluit

doe ik hier nog een servoaansturing bij dan beginnen de ledjes random te knipperen
dus dan heb ik twee servo`s en twee schakelaars

de volgende code heb ik gebruikt hiervoor

 #include<Servo.h>
int pos = 0;

Servo servo;
Servo servo1;
void setup() {
  pinMode(2, INPUT);                                   // knop1
  pinMode(3, INPUT);                                   // knop2
  pinMode(4, OUTPUT);                                  // led rood
  pinMode(5, OUTPUT);                                  // led geel
  pinMode(6, INPUT);                                   // knop 3
  pinMode(7, INPUT);                                   // knop4
  pinMode(8, OUTPUT);                                  // led rood1
  pinMode(9, OUTPUT);                                  // led geel1
  servo.attach(10);                                    // servo
  servo1.attach(11);                                   // servo1
}
void loop() {
  while (digitalRead(2) == HIGH && pos < 105) {        // door druk op knop 1 servo gaat naar 105 graden     
    pos++;
    servo.write(pos);
    delay(15);
  }
  if (pos == 105) {                                     // indien 105 graden bereikt rode LED aan gele LED uit
    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);                             
  }
  while (digitalRead(3) == HIGH && pos > 75) {          // door druk op knop 2 servo gaat naar 75 graden   
    pos--;
    servo.write(pos);
    delay(15);
  }
  if (pos == 75) {                                      // indien 75 graden bereikt gele LED aan rode LED uit
    digitalWrite(5, HIGH);
    digitalWrite(4, LOW);
  }
  while (digitalRead(6) == HIGH && pos < 100) {         // door druk op knop 4 servo1 gaat naar 105 graden
    pos++;
    servo1.write(pos);
    delay(15);
  }
  if (pos == 100) {                                     // indien 105 graden bereikt rode LED gaat aan gele LED uit
    digitalWrite(9, HIGH);
    digitalWrite(8, LOW);
  }
  while (digitalRead(7) == HIGH && pos > 70) {           // door druk op knop 5 servo1 gaat naar 75 graden
    pos--;
    servo1.write(pos);
    delay(15);
  }
  if (pos == 70) {                                       // indien 75 graden bereikt gele LED gaat aan rode uit
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
  }
}
 
wie kan mij helpen denk zelf mischien iets dat een pin niet geschikt is voor wat ik hem vraag  :o  :o

MAS3

Hoi Manfred.

Je hebt al een aantal posts, ook met code daarin geplaatst.
Het forum verwerkt code niet goed, omdat het bijvoorbeeld spaties weglaat en probeert code voor het forum zelf afte vangen en te verwerken.
Daarom graag voortaan code tussen [code] [/code] tags zetten.
Dat maakt het veel eenvoudiger die code te bekijken, en te kopiëren naar de IDE om zo te zien wat jij ook zou zien.


Ik zie in je code dat je geheel onnodig de blokkerende code while.. gebruikt.
Dat zal je zeker gaan opbreken, dus gooi die while maar overboord en bedenk er iets anders op (ik geef iedereen altijd hints daarvoor in iedere post die ik plaats).

Maar het beschreven probleem is volgens mij onwaarschijnlijk terug te voeren op je code.
Ik heb het donkerbruine vermoeden dat je de servo's voedt uit de Arduino.
En dat moet je dus niet doen.
Want de Arduino kan eigenlijk niet eens 1 enkele servo voeden en is daar ook nooit voor bedoeld.
Daardoor zouden er allerlei ongewenste zaken kunnen gebeuren, en wat jij beschrijft is daar deel van.


Dus geef eens aan hoe je een en ander hebt opgebouwd.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

manfredwetzels

hoi ik heb idd getest met de arduino op 1 servo dat werkt goed
nu heb ik het baanplan op een bord gemaakt en overal waar een wissel is is een schakelaar en twee ledjes
ik heb voor deze test nog geen servo`s aangesloten op respectievelijk 10 en 11

wel hebben de ledjes een gedeelde massa naar arduino

heb ook al geprobeerd arduino te voeden met 9 volt blokbatterij
want als ik logisch denk en er branden altijd 2 leds tegelijk in dit geval 2 oranje van 3v  of 2 rode van 1,9 volt of een combi hiervan en de arduino maar 5 volt levert zou ik te weinig hebben
de 9 volt heb ik gewoon via de ronde voedingsplug aangesloten

zal proberen morgen een tekening te maken van het geheel

mvg manfred


MAS3

Nou, je gedachtegang klopt niet helemaal hoor.

Als je de Arduino met 9 volt voedt, dan krijgt je Arduino nog steeds 5 volt.
Want inderdaad moet je dat via die stekker doen, maar dan gaat het via een voedingsgedeelte en word er 5 volt van gemaakt, want je Arduino word ineens een roker als het meer dan 5.5 volt zou zijn.
En inmiddels weet iedereen dat roken slecht is.
Dat voedingsgedeelte kan maar een klein beetje stroom leveren, net genoeg voor wat er op je Arduino boardje zit.
De 2 LEDjes die gelijkertijd branden (uiteraard via een passende weerstand, echt niet zonder doen !), dat kan nog wel via die voeding.
Maar een servo kan wel 1 Ampère trekken en dat gaat je Arduino echt niet leveren.
Dus per servo 1 Ampère rekenen is een goed idee.
Dat betekent dus dat je elke servo een aparte voedingsdraad geeft, en je Arduino ook.
De servo's werken ook op 5 volt dus het is prima als je alles uit een voeding voedt die 2.5 A kan leveren bij 5 Volt.
Maar dan moet je 'm niet via die ronde stekker aansluiten want die kan geen 5 volt uit 5 volt maken; daarvoor moet ie minimaal iets van 7.5 volt hebben.

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

MAS3

De foto is nog steeds niet te zien, volgens mij heb je iets in de verkeerde volgorde gedaan.
Ik zie de sluitende tags wel maar de rest niet.
Benieuwd naar je foto.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

manfredwetzels



niet ingetekend de pulldown resistors

MAS3

Hoi.

Dat is een screenshot die erg lastig te lezen is.
Maar ik meen te kunnen zien dat je daar 2 maal pin nummer 3 hebt getekend, 1 keer voor de bovenste schakelaar, en 1 keer voor het bovenste LEDje.
Dat kan niet kloppen (nou ja, dan moet je wel heel slim kunnen programmeren).

Wanneer je nu dit probleem hebt opgelost (al dan niet bewust) door ergens op te schuiven richting pin 1, dan moet je rekening houden met het volgende:
Arduino pinnen D0 en D1 zijn de pinnen voor seriële communicatie.
Wanneer je een verbinding hebt met de PC, dan zit je computer hier ook aan.
En wanneer je op 1 of andere manier seriële communicatie gebruikt, dan worden deze pinnen dus gebruikt en verstoort dat hetgene dat je in je sketch verder nog gepland had voor die pinnen.


Ik zie in je code niet zo snel iets dat met een seriële verbinding en/of pinnen D0 of D1 te maken hebben, maar je moet je hier wel altijd van bewust zijn.

Dan zijn er nog 3 zaken af te kruisen:

De tekening klopt niet,
Of
De aansluitingen in gebruik komen niet overeen met jouw tekening,
Of
Ik zie het niet goed.

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

manfredwetzels

#7
Feb 15, 2018, 07:35 am Last Edit: Feb 16, 2018, 07:06 am by manfredwetzels Reason: probleem opgelost
hoi

bedankt zover maar je hebt gelijk de tekening klopt niet heb idd 2 x pin 3 geschreven dit moet dus naar boven gecorrigeerd worden dus nee d0 en d1 gebruik ik niet in mijn aansluitingen en ook niet in mijn sketch
heb nu al de code aangepast met in het tweede gedeelte pos te veranderen in pos 1 dat daar ook geen conflicten kan geven

MAS3 bedankt voor het meedenken heb het probleem gevonden de schakelaars zijn allemaal nieuw besteld via de grootste chinese leverancier hier bleek dus een defecte tussen te zitten wat signaal doorgaf terwijl dat niet mocht dus gewoon BAD LUCK

Waar ik alleen nog niet helemaal uitkom is het commando while wat ik overboord moet gooien wat moet ik daarvoor in de plaats doen heb het al geprobeerd met "if" en ook al geprobeerd het weg te laten maar niks werkt dan .

groetjes manfred

MAS3

Hoi.

While is blokkerende code zoals ik al zei.
Je geeft aan dat je wat anders geprobeerd hebt, maar ik kan dan niet weten hoe je dat geprobeerd hebt.
Dus zul je hier moeten laten zien wat je geprobeerd hebt, zodat men die code kan bestuderen en je tips kan geven over wat daar mogelijk fout en/of voor verbetering vatbaar is.

Zonder dat, denk ik dat je niet hebt gekeken naar de blink without delay voorbeeld sketch, of 'm niet volledig hebt  begrepen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Go Up