Pulserend schakelen

Alles wat niet past in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 18 Feb 2019, 23:03
Woonplaats: Heerhugowaard

Pulserend schakelen

Berichtdoor Michield73 » 20 Feb 2019, 23:13

Hallo allemaal.

Ik ben Michiel en net sinds een weekje, wat begonnen om mij te verdiepen in de Arduino.
Graag zou ik een zetje in de goede richting krijgen voor mijn probleempje.

Ik wil dmv een arduino, na het sluiten van één ingang, een uitgang 7 tal pulsen laten schakelen (aan-uit, aan-uit, aan-uit, aan-uit, aan-uit, aan-uit, aan-uit). Daarna moet een 2e uitgang gewoon hoog worden.
Als de ingang geopend word, moet de 2e uitgang weer laag worden en een 3e uitgang die 7 pulsen schakelen.
Nu dacht ik met mijn nuchtere verstand, dat ik die uitgangen dmv een delay wel 7x kon in en uit schakelen. Dat doet het ook wel, alleen stopt het niet na die 7 keer, maar gaat het gewoon door.

Zou iemand mij hier op gang kunnen helpen? Ik heb al heel wat jouwbuis filmpjes bekeken, maar dat wat ik graag wil, ben ik nog niet tegen gekomen.
Alvast mijn dank voor het meedenken.

Groetend, Michiel

Advertisement

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

Re: Pulserend schakelen

Berichtdoor baco1978 » 21 Feb 2019, 10:38

Hallo Michiel,

Allereerst welkom op het forum.
Als je hier in het forum je code plaatst, kunnen we je wat makkelijker helpen / eventueel aangeven waar het fout gaat.
Met vriendelijke groet Arjan

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

Re: Pulserend schakelen

Berichtdoor shooter » 22 Feb 2019, 00:54

Kijk eerst eens naar les 2 ofwel met een timer een tijdje wachten, dat heeft veel voordelen boven delay.
als de ingang aan is ze dan in een functie een teller op 1 en start een tijd(teller). als de tijd gedaan is en de ingang is nog aan zet dan de uitgang aan.
na een andere tijd uitgang weer uit en teller op 2 zetten.
maak een schema en doe het met een for next loop om te beginnen.
je kunt het ook oplossen met scratch dat werkt heel simpel met blokken.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 18 Feb 2019, 23:03
Woonplaats: Heerhugowaard

Re: Pulserend schakelen

Berichtdoor Michield73 » 12 Apr 2019, 20:17

Allereerst mijn excuses voor het late reageren.
Na een tijd van ziek geweest te zijn en andere drukke bezigheden, toch het projectje maar weer eens proberen op te pakken.

Ik zal overigens mijn toepassing eens verder uitlichten.
Het is de bedoeling dat de arduino aangesloten wordt tussen de microfoon en mijn 27Mc CB-radio. Deze bak heeft geen mogelijkheid om een apart zend en ontvangst kanaal in te stellen.
Op de microfoon, heb ik wel een channel-UP en channel-DOWN toets, waarmee ik de kanalen kan kiezen.
De arduino moet dus bij inknijpen van de microfoon eerst 7 kanalen UP schakelen, voordat de zender ingeschakeld mag worden. Bij loslaten moet eerst de zender in ontvangst gaan en dan weer 7 kanalen DOWN schakelen.
Die 7 kanalen schakelen moet eigenlijk zo snel mogelijk als dat wat de radio aan kan. Die tijd zou wel variabel moeten kunnen zijn.

Ik had de volgende code bedacht, maar dat blijkt niet te werken.

int switchstate = 0;

void setup() {
// declare the LED pins as outputs
pinMode(3, OUTPUT); // Channel up
pinMode(4, OUTPUT); // Channel down
pinMode(5, OUTPUT); // TX

// declare the switch pin as an input
pinMode(10, INPUT); //PTT on mike
}

void channelup() {
// 7x channel up pulsing
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(3, HIGH);
delay(100);
digitalWrite(3, LOW);
delay(100);
digitalWrite(5, HIGH);
}

void channeldown() {
// 7x channel down pulsing
digitalWrite(5, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);
delay(100);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(4, LOW);

}



void loop() {

// read the value of the switch
// digitalRead() checks to see if there is voltage on the pin or not
switchstate = digitalRead(10);

// if the button is not pressed turn on the green LED and off the red LEDs
if (switchstate == LOW) {
channeldown;
// digitalWrite(3, HIGH); // turn the green LED on pin 3 on
// digitalWrite(4, LOW); // turn the red LED on pin 4 off
// digitalWrite(5, LOW); // turn the red LED on pin 5 off
}
// this else is part of the above if() statement.
// if the switch is not LOW (the button is pressed) turn off the green LED and
// blink alternatively the red LEDs
else {
// digitalWrite(3, LOW); // turn the green LED on pin 3 off
// digitalWrite(4, LOW); // turn the red LED on pin 4 off
// digitalWrite(5, HIGH); // turn the red LED on pin 5 on
// wait for a quarter second before changing the light
// delay(250);
// digitalWrite(4, HIGH); // turn the red LED on pin 4 on
// digitalWrite(5, LOW); // turn the red LED on pin 5 off
// wait for a quarter second before changing the light
// delay(250);
channelup;
}
}

Het laatste stuk na Void Loop klopt in ieder geval niet. Waarschijnlijk wil ik weer iets wat blijkbaar erg moeilijk is.
Of ik denk te moeilijk hoor ;)

Ik zal eens kijken naar dat scratch, wellicht dat dat uitkomst bied.

Alvast bedankt voor het meedenken.

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

Re: Pulserend schakelen

Berichtdoor shooter » 12 Apr 2019, 20:47

kijk eens naar een for functie
je kunt ook while gebruiken trouwens, dan moet je zelf tellen.
en die delay is wel leuk voor simpele dingen , maar kijk ook eens naar blink without delay ofwel een soort teller die elke msec een teller ophoogt.
als je dan vaak kijkt of de teller boven je waarde is dan ga je even naar een functie toe.
en gebruik een paar relais om zeker te zijn dat het galvanisch gescheiden is, want jouw schakelaar op je CB bak is zeker weten geen 5 Volt.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 18 Feb 2019, 23:03
Woonplaats: Heerhugowaard

Re: Pulserend schakelen

Berichtdoor Michield73 » 12 Apr 2019, 22:08

Nee, dat is zeker geen 5 Volt. de relais staan er ook zeker tussen. ;)
Dank voor je info zover, zal er eens in duiken.

Terug naar Theekransje

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten