Overweg trein

Hallo allen,

Ik ben leerkracht techniek en ik zou graag Arduino gebruiken in mijn lessen.
Een van de opdrachten die ik de leerlingen zou willen laten maken is een treinoverweg met een modelbouwtrein.

Ik heb hier een if/else structuur waarbij er een witte LED knippert (1 seconde aan, 1 seconde uit). Voor het overschakelen naar het alarmsignaal en de rode knipperlampen zou ik om het gemakkelijk te houden een drukknop/eindeloopschakelaar willen gebruiken om de aankomende trein te detecteren.

Het probleem is echter dat de if/else structuur het signaal van de drukknop maar om de 2 seconden monitort waardoor het tussen de 0 en de 2 seconden duurt voordat er een alarm begint te rinkelen en de lichten op rood springen. Is hier, buiten de knippertijd van de lichten te verminderen een oplossing voor?

Alvast bedankt voor de reactie's

Groetjes

kijk naar het voorbeeld (meegeleverd) blink without delay.

want ik vermoed dat jij delay gebruikt, echter het blijft gokken totdat je je code post.

Echter het is voor de studenten wel de juiste uitdaging om van een "fout" programma een goed werkend iets te maken :slight_smile:

Rob

Ik gebruik inderdaad een delay voor de knipperende Led's.

Onderaan staat het programma maar dit is omgevormd vanuit Ardublock omwille van het gebruiksgemak voor de leerlingen.

Om het even te schetsen wat ik van plan ben...
Deze opdrachten zullen gegeven worden aan leerlingen van 13-14 jaar die in groepen van 20 personen in een klas zitten. En zij hebben helemaal geen voorkennis over elektronica, elektronische componenten of dergelijke.

Daarom heb ik getracht simpele oefeningen te maken voor de leerlingen waarin ze een probleemstelling krijgen om iets op te lossen en toch voldoende uitdaging krijgen. :slight_smile: Fouten als deze opsporen zal voor de meeste nog iets te hoog gegrepen zijn.

Alvast bedankt voor de uitleg!

#include <Servo.h>

int ABVAR_1;
int ABVAR_2;
Servo servo_pin_9;

void setup()
{
pinMode( 2 , INPUT);
servo_pin_9.attach(9);
pinMode( 13 , OUTPUT);
pinMode( 12 , OUTPUT);
pinMode( 11 , OUTPUT);
}

void loop()
{
if (digitalRead( 2))
{
for (ABVAR_1=0; ABVAR_1< ( 5 ); ++ABVAR_1 )
{
digitalWrite( 13 , HIGH );
tone(6, 840);
digitalWrite( 12 , LOW );
delay( 200 );
digitalWrite( 13 , LOW );
tone(6, 440);
digitalWrite( 12 , HIGH );
delay( 200 );
noTone(6);
}

for (ABVAR_2=0; ABVAR_2< ( 20 ); ++ABVAR_2 )
{
servo_pin_9.write( 1 );
digitalWrite( 13 , HIGH );
digitalWrite( 12 , LOW );
delay( 200 );
digitalWrite( 13 , LOW );
digitalWrite( 12 , HIGH );
delay( 200 );
noTone(6);
digitalWrite( 12 , LOW );
}

}
else
{
digitalWrite( 11 , HIGH );
servo_pin_9.write( 85 );
delay( 1000 );
digitalWrite( 11 , LOW );
delay( 1000 );
}
}

En zij hebben helemaal geen voorkennis over elektronica, elektronische componenten of dergelijke.

Leer ze in elk geval goede namen te geven aan variabelen.
Leer ze ook werken met millis() - blink without delay

En last but not least beginselen van state machines "Arduino onthoudt toestand"

Hoewel er inderdaad interessante stukken in deze opdracht zitten, vraag ik mij wel af of je niet teveel in een keer neerlegt bij die kinderen. Zoals Rob al eerder aangaf zit je oplossing in het programma blink without delay. In jouw huidige code, zit de processor telkenmale gewoon te wachten en niets te doen. Bij blink without delay is de processor constant aan het kijken of hij wat moet doen. Dus dan draai je het probleem om.

Ik zou dan eerst wat lessen besteden om te spelen met blink en daarna met blink without delay om zodoende dat goed in de vingers te krijgen. Dit omdat je het vrijwel overal zal gebruiken.

ik heb wel een arduino lesboek in het nederlands.
mail is shooter@home.nl
en afhankelijk van de plaats in nederland, kom ik graag een keer kletsen wat wel en niet kan.
neem eens contact op met een fablab. of een hacker

ofwel heel simpel beginnen, en niet te snel willen, kun jij ook niet.

begin met blink, laat dan een ledje aansluiten op dezelfde uitgang. laat dan en programma maken voor SOS, stap dan over naar een state machine met diezelfde sos, dan komt without delay aan de beurt, maar dan ben je al 10 lesuren verder hoor.

Hallo allen,

Ten eerste al zeer bedankt voor alle tips, ik ga ze zeker verwerken!

Dit project dat ik hier laat zien is het eindproject dat ik na vijf weken wil bereiken. Of dit haalbaar zal zijn of niet dat is nog de vraag...

Mijn bedoeling is voornamelijk om de leerlingen te leren denken over technische systemen (dit moeten wij ook van de overheid uit). Ik wil ze laten kennismaken met verschillende componenten zoals motoren, led's, stappenmotoren, zoemers, ...
Zodoende dat als ze interesse hebben in deze systemen ze hiervoor kunnen kiezen naar hun latere opleiding toe.

Het is zeker niet de bedoeling om er experten van te maken zoals de mensen hier op het forum!

Shooter: ik woon in België dus ik zal niet kunnen ingaan op jou aanbod, hoe graag ik het ook zou doen!
Indien je interessant digitaal materiaal hebt ben ik hier natuurlijk zeer in geïnteresseerd.

Zeer bedankt voor alle reacties!

Groeten Jonas

Jonas
Als je in de buurt van Gent woont ga dan naar de arduino jam.
http://forum.arduino.cc/index.php?topic=339998.0
Uw leerlingen zullen U dankbaar zijn.
Met vriendelijke groet
Jantje

PS ik zal er ook zijn

awel jan ga je daar weer koppen maaien?
en afstand is geen bezwaar hoor, email is bloedsnel, en ik ben iets langzamer.

het idee van de overweg is wel aardig bedacht, maar is best wel hoog gegrepen voor leerlingen, en schijnbaar voor u ook gezien het programma waar toch wel didactische onaardigheden in zitten.
ik herhaal begin eens simpel met blink without delay dat is al een hele flinke stap.

een servo is al een flinke les om uit te leggen wat er gebeurt (er zit nogal wat elektronika in dat kleine doosje, een timer, een terugkoppeling, een versterker, stroombeveiliging)
zelfs een potmeter is al 2 lesuren.

shooter:
awel jan ga je daar weer koppen maaien?
en afstand is geen bezwaar hoor, email is bloedsnel, en ik ben iets langzamer.

Ik wou Vjotechno gewoon duidelijk maken dat er ook heel wat in Belgie is. Als hij een beetje goed uit zijn lessen wil komen heeft hij nog een aardig leerproces voor de boeg. Een jam kan dan zeker helpen.

jazeker is er in belgie actie zelfs meer als in het suffe nederland, belgie vindt ik inovatiever.
en ja ik ben het helemaal met je eens hij zal eerst zelf moeten leren alvorens het anderen te kunnen leren, ik sta altijd versteld welke vragen die zelfs kleine kinderen kunnen stellen, maar ook hoe slim ze iets oplossen.
en ja een jam of gewoon kletsen zonder confiture is een grote aanrader.