helpen met een project ?

Arduino specifieke Software
Berichten: 8
Geregistreerd: 24 Aug 2015, 16:39

helpen met een project ?

Berichtdoor dirkvp » 04 Sep 2015, 23:02

beste
ben gestart met arduino
heb wel al in het verleden verschillende schakelingen gemaakt maar met gewone traditionele componenten
zoals met allerlei IC's
een knipperlicht met de arduino is eenvoudig
een mono-stabiele led aanzetten met start stop knop lukt ook..
maar een aparte start drukknop en stop drukknop knipperlicht lukt me niet om de goeie code te schrijven
kan U me soms a.u.b. daarbij helpen
moet nog veel leren,maar heb een boek van elector voor de oefeningen te maken

alvast dank

m.v.g.

dirk

Advertisement

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

Re: helpen met een project ?

Berichtdoor nicoverduin » 05 Sep 2015, 08:31

Dirk
Het helpt voor anderen als je jouw code hier publiceert. Verder kun je jouw vraagstuk opdelen in een aantal sub problemen:
a) een functie die alleen knippert als hij moet knipperen. Maak hierbij gebruik van Blink without delay (ff googelen)
b) een functie die de start en stop knoppen bedient.

De samenwerking die je krijgt tussen beide functies is dat:
als de knipper functie loopt hoef je alleen naar de stop knop te kijken. Als de knipper functie niet loopt hoef je alleen naar de start knop te kijken.

Of gelijk in de loop() functie kan natuurlijk ook. Om je wat op weg te helpen:
Afbeelding
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 24 Aug 2015, 16:39

Re: helpen met een project ?

Berichtdoor dirkvp » 06 Sep 2015, 10:15

beste

hartelijk dank voor het blokdiagram

aangezien ik pas begonnen ben, ben ik nog niet in staat de 2 functies te combineren
en een juiste code te schrijven !
kan U me daarbij eventueel een voorbeeld van de juiste code geven

hier de code van één functie

void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

-----------------------------------------------------------

het aan en uitzetten van de knipperled heb ik nog geen juiste code !


alvast al dank voor een eventuele hulp

m.v.g.

dirk

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

Re: helpen met een project ?

Berichtdoor shooter » 06 Sep 2015, 21:38

je knipperlicht zoals je net schrijft lijkt te werken.
vervang de digitalwrite door het true en false maken van de varabele knipper (wel opgeven boven setup (ik vinddat je dat zelf moet proberen)
dan moet je met 2 knoppen een andere variabele true of false maken
dan beiden combineren met &&.
ik gebruik een cheatsheet maar bij help reference zie je hetzelfde.
zolang je niets aansluit kan er niets kapot.
paul deelen
shooter@home.nl

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

Re: helpen met een project ?

Berichtdoor nicoverduin » 07 Sep 2015, 07:33

de hele loop in pseudocode (zonder functies):
cpp code
ALS moetIkKnipperen = true DAN
ALS (millis() - timer) > INTERVAL DAN
ALS LED = AAN DAN
LED = UIT
ANDERS
LED = AAN
EINDE ALS
timer = millis()
EINDE ALS
lees STOP_KNOP
ALS STOP_KNOP = INGEDRUKT DAN
moetIkKnipperen = false
EINDE ALS
ANDERS
lees START_KNOP
ALS START_KNOP = INGEDRUKT DAN
moetIkKnipperen = true
EINDE ALS
EINDE ALS



Jouw sketch wordt vwb de loop() niet veel groter.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: helpen met een project ?

Berichtdoor baco1978 » 07 Sep 2015, 13:55

een kleine toevoeging.

je gebruikt in je eigen code delay's, maar in de tussentijd kan je arduino niks anders doen (omdat deze in de delay-loop zit).

kijk eens naar https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Met vriendelijke groet Arjan

Berichten: 8
Geregistreerd: 24 Aug 2015, 16:39

Re: helpen met een project ?

Berichtdoor dirkvp » 08 Sep 2015, 21:48

dag vrienden

zeker dank al voor de tips !
zal even nog wat geduld moeten hebben om eerst
de basis en veel gebruikte begrippen een juiste plaats te geven om een werkende code te schrijven
maar vooral wat belangrijk is als de voedingsspanning 5v op de arduino gezet wordt mag er op de uitgang nog niets gebeuren
wat ik nu wel heb,ofwel moet ik pin 13 niet gebruiken voor een led of relais die ik rechtsstreeks aansluit,een raid-relais
5v 8 mA denk dat het kan ? of is het aan te raden te ontkoppelen met een optocoupler ?

start stop met één drukknop maar als de spanning 5v op de arduino gezet wordt dan begin de led enkele keren te knipperen
mag niet kunnen !
nu start stop met 2 drukknoppen !
nu naar de oplossing zoeken of nog een hulpje mag als het kan...

m.v.g

dirk

Berichten: 8
Geregistreerd: 24 Aug 2015, 16:39

Re: helpen met een project ?

Berichtdoor dirkvp » 08 Sep 2015, 21:56

start stop met één drukknop: ( ontdendering )

const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// Variables will change:
int ledState = HIGH; // the current state of the output pin
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 50; // the debounce time; increase if the output flickers

void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);

// set initial LED state
digitalWrite(ledPin, ledState);
}

void loop() {
// read the state of the switch into a local variable:
int reading = digitalRead(buttonPin);

// check to see if you just pressed the button
// (i.e. the input went from LOW to HIGH), and you've waited
// long enough since the last press to ignore any noise:

// If the switch changed, due to noise or pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}

if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state:

// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;

// only toggle the LED if the new button state is HIGH
if (buttonState == HIGH) {
ledState = !ledState;
}
}
}

// set the LED:
digitalWrite(ledPin, ledState);

// save the reading. Next time through the loop,
// it'll be the lastButtonState:
lastButtonState = reading;
}

Berichten: 8
Geregistreerd: 24 Aug 2015, 16:39

Re: helpen met een project ?

Berichtdoor dirkvp » 10 Sep 2015, 21:31

dag vrienden

kan iemand mijn fout corrigeren ?

alvast dank

m.v.g.

dirk


-------------------------------------------------------------------

//aan uit knipperlicht met 2 drukknoppen

const int pushButtonStart = 2;
const int pushButtonStop = 3;
const int ledPin = 13; // LED op pin 13
int buttonStateStartStop = 0 // houdt bij op welke button er het laatst gedrukt is. 0= stop, 1= start
int ledState = LOW; // ledState gebruikt om de LED te setten
long previousMillis = 0; // stockeert laatste keer dat LED is geupdated
long interval = 1000; // knipperinterval (milliseconds)

void setup() {

Serial.begin(9600); // initialiseren van seriele communicatie op 9600 bits per seconde:
pinMode(pushButtonStart, INPUT); // maak de pushbutton pin een input
pinMode(pushButtonStop, INPUT); // maak de pushbutton pin een input
pinMode(led, OUTPUT);
}

void loop() {

unsigned long currentMillis = millis();
if(digitalRead(pushButtonStart == 1) // lees de input pins:
{
buttonStateStartStop = 1; //er is op start gedrukt. Onthoud dit door de status op 1 te zetten
}
if( digitalRead(pushButtonStop == 1)
{
buttonStateStartStop = 0; //er is op stop gedrukt. Onthoud dit door de status op 0 te zetten
}
}
delay(1); // delay in tussen reads voor stabiliteit
if(buttonStateStartStop == 1)
{
if(currentMillis - previousMillis > interval) { //knipperen als buttonStateStartStop 1 is (er werd op start gedrukt)
previousMillis = currentMillis; // bewaar de laatste keer dat de LED geknipperd heeft
if (ledState == LOW) // als de LED aan is, zet hem uit en vice versa:
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState); // zet de LED aan of uit
}
else { //zet LED uit als buttonStateStartStop 0 is (er werd op stop gedrukt)
digitalWrite(led, LOW); // zet LED uit door voltage LOW te zetten
}
}

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 104 gasten