Lego trein motor

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Lego trein motor

Berichtdoor shooter » 31 Mei 2016, 09:42

mijn stukje nog een keer lezen, staat iets in van een delay om te zorgen dat de trein voorbij de sensor is.
en zo kom je dan toch dadelijk aan een werkend programma leuk he.

de oplossing is gewoon een mooi begin, en zeker niet klasse (let toch eens op je nederlands nico) :)
paul deelen
shooter@home.nl

Advertisement

Berichten: 15
Geregistreerd: 04 Okt 2015, 21:34

Re: Lego trein motor

Berichtdoor na0704 » 31 Mei 2016, 22:34

Ik weet het nog niet helemaal zeker, maar volgens mij is het gelukt. Ik had vanavond niet veel tijd, maar ik moest er gewoon mee doorgaan.
Het vervelende is dat ik nog niet eens precies weet wat ik nu eigenlijk gedaan heb. Ik heb gewoon zitten proberen (eerste delay op 1000 omdat hij anders gaat stotteren) en verder zitten schuiven met de andere delay. Beetje roekeloos, dat geef ik toe.

Ik ga morgen even met de hele trein en een perron testen of het echt werkt.


Dit is de code:

cpp code
int LDR = A0;
int LDRValue = 0;

int IN1 = 8;
int IN2 = 9;
int ENA = 10;

int lightSensitivity = 500;

void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);

digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
}

void loop() {
LDRValue = analogRead(LDR);
Serial.println(LDRValue);
delay(1000);

LDRValue = analogRead(LDR);
if(LDRValue > lightSensitivity){
digitalWrite(IN2,LOW);
delay(5000);
}
if(LDRValue > lightSensitivity){
digitalWrite(IN2,HIGH);
}
}
}

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Lego trein motor

Berichtdoor shooter » 31 Mei 2016, 23:02

nee dit gaat niet werken zo.
als de sensor trein ziet dan LOW dat heb je goed.
dan de delay ook goed (5 seconden wachten aan perron)
dan uitgang HIGH maken ongeacht of de sensor een trein ziet of niet.
zodra de trein weg is kun je weer herbeginnen.
paul deelen
shooter@home.nl

Berichten: 15
Geregistreerd: 04 Okt 2015, 21:34

Re: Lego trein motor

Berichtdoor na0704 » 31 Mei 2016, 23:26

Ik was toevallig net bezig met een filmpje om te laten zien dat ik inderdaad net iets te vroeg heb gejuicht:

https://www.youtube.com/watch?v=KwwZmLBoYZM&feature=youtu.be


Helaas...


Hij stopt niet direct als hij moet stoppen en als hij gaat rijden dan stopt hij weer als hij binnen de seconde nog steeds de trein ziet.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Lego trein motor

Berichtdoor nicoverduin » 01 Jun 2016, 06:20

Waarom zet je nu die delay er niet gewoon achter die we eerder hebben voorgesteld?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Lego trein motor

Berichtdoor shooter » 01 Jun 2016, 11:47

de loop moet eigenlijk heel snel zijn.
dus die delay van 100 eruit halen.
dan stopt de trein zodra de sensor uitgaat.
dan de stoptijd van de trein
dan trein aanzetten
dan wachten tot trein weg is (kun je zien als sensor weer aangaat (doe dat met een while , (nieuwe opdracht)
dan ga je weer naar het begin toe
(nee ik ga geen programma geven dan is de uitdaging er van af
paul deelen
shooter@home.nl

Berichten: 15
Geregistreerd: 04 Okt 2015, 21:34

Re: Lego trein motor

Berichtdoor na0704 » 01 Jun 2016, 23:01

Ik verwacht helemaal niet dat jullie mijn code gaan schrijven hoor. Ik wil het zelf kunnen en waardeer jullie hulp.

Ik ben inmiddels weer iets verder gekomen. Hij stopt nu 1 keer en gaat weer netjes rijden. Maar ik weet niet hoe je weer terug moet naar het begin, zodat hij ook het tweede, derde enz... rondje stopt bij het perron.

cpp code
int LDR = A0;
int LDRValue = 0;

int IN1 = 8;
int IN2 = 9;
int ENA = 10;

int lightSensitivity = 500;

void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);

digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
}

void loop() {
LDRValue = analogRead(LDR);
Serial.println(LDRValue);
// delay(1000);

LDRValue = analogRead(LDR);
if(LDRValue > lightSensitivity){
digitalWrite(IN2,LOW);
delay(5000);
while(LDRValue > lightSensitivity){
digitalWrite(IN2,HIGH);
}
}
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Lego trein motor

Berichtdoor nicoverduin » 01 Jun 2016, 23:07

Het is toch een loop()... Draait eeuwig...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Lego trein motor

Berichtdoor shooter » 02 Jun 2016, 09:55

probeer het maar het zal werken zoals je het geschreven hebt.
wel even die Serial.println // in commentaar zetten want er wordt nu 1 miljoen keer/ seconde de ldrvalue geschreven en zo snel kun je toch niet kijken, en de serial loopt dan vol.

opdracht: zorg dat die print 1 /seconde gebeurt (zie blink without delay)

zoals nico zegt: de setup wordt maar 1 keer gedaan, en een processor is niet te stoppen, dus als je programma aan het eind van de loop is dan begint deze weer aan het begin van loop().
paul deelen
shooter@home.nl

Berichten: 15
Geregistreerd: 04 Okt 2015, 21:34

Re: Lego trein motor

Berichtdoor na0704 » 02 Jun 2016, 23:18

Het is toch zo dat met bovenstaande code de trein slechts 1 keer stopt. Zie filmje:


https://youtu.be/aEouPiO56Do


Als ik de Serial.PrintIn als comment zet dan veranderd er aan de werking volgens mij niets, alleen zie ik geen waarder meer in de serial monitor.


Ik heb al eea zitten proberen met de "blink without relay" en ben daar inmiddels zover dat de trein stopt maar de 5 seconde pauze starten pas als ik hem met de hand voorbij de sensor heb geduwd.

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten