Vraagje van beginner

Berichten: 7
Geregistreerd: 30 Apr 2023, 13:37

Vraagje van beginner

Berichtdoor hobbyist » 30 Apr 2023, 13:48

Hoe maak ik met een uno het volgende:

Er wordt een input hoog
Bij het hoog worden dus bij de opgaande flank moet 1 output 0,5 sec hoog worden terwijl het signaal op de input hoog blijft

Als uiteindelijk ( kan uren duren) het signaal op de input weer laag wordt moet bij de neergaande flank 1 output 0,5 sec hoog worden

Nu alles weer in rust tot input weer hoog wordt.

Wie wil mij op weg helpen.

Alvast bedankt

Advertisement

Berichten: 7
Geregistreerd: 30 Apr 2023, 13:37

Re: Vraagje van beginner

Berichtdoor hobbyist » 05 Mei 2023, 20:57

Bedankt voor het plaatsen van mijn vraagje.

Maar mijn vraag staat bij de verkeerde rubriek.
Staat onder Raspberry maar het gaat over Arduino

Hoe kan dit in de juiste rubriek komen te staan ?

Groet,

Hobbyist

Berichten: 7
Geregistreerd: 30 Apr 2023, 13:37

Foutje

Berichtdoor hobbyist » 05 Mei 2023, 21:03

Sorry bericht staat verkeerd
Het gaat niet om een Raspberry maar om een Arduino

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

Re: Vraagje van beginner

Berichtdoor shooter » 05 Mei 2023, 23:19

Code: Alles selecteren
int inp1=2;
int raak=digitalRead(inp1);
if !timerrunt
if (raak) then starttimer
if (raak) && timerklaar {digitalWrite(uit5,HIGH);
dit is een manier (maar je zult een sequence moeten schrijven wat wanneer moet gebeuren een soort tijdsdiagram met alle mogelijkheden.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 30 Apr 2023, 13:37

Re: Vraagje van beginner

Berichtdoor hobbyist » 06 Mei 2023, 16:59

shooter schreef:
Code: Alles selecteren
int inp1=2;
int raak=digitalRead(inp1);
if !timerrunt
if (raak) then starttimer
if (raak) && timerklaar {digitalWrite(uit5,HIGH);
dit is een manier (maar je zult een sequence moeten schrijven wat wanneer moet gebeuren een soort tijdsdiagram met alle mogelijkheden.


Bedankt scooter ik ga hiermee experimenteren

Berichten: 38
Geregistreerd: 20 Jul 2022, 14:40

Re: Vraagje van beginner

Berichtdoor Harm J Seef » 10 Mei 2023, 15:54

In onderstaand voorbeeld wordt zowel op de opgaande als op de neergaande flank van een signaal een schakelpuls opgewekt.
Als schakeling wordt dit een ‘frequentie-verdubbelaar’ genoemd.
Het ingangssignaal wordt gebruikt om via een opkom-/afvalvertraagd relais/timer een tweede signaal te maken.
Een EXOR conditie vergelijkt beide signalen als ingangssignalen,
zodat zowel op de opgaande als neergaande flank nu een puls wordt gemaakt.
Via een omweg kan in Arduino-C dus een EXOR geprogrameerd worden.


// 2109_EXOR Proof of concept, programming an EXOR-condition
// Arduino-C does not provide the EXOR statement
// ============================================================================
int SignalIn = 3; // connected to push button
int SignalOut = 13; // Signal out, connected to led
int Delayed = 10; // delayed signal, connected to LED
int Pulse = 9; // pulse signal, connected to LED
bool SignalA = LOW; // EXOR input A
bool SignalB = LOW; // EXOR input B
//
void setup() //
{ pinMode(SignalIn, INPUT); // push button
pinMode(SignalOut, OUTPUT); // signal A
pinMode(Delayed, OUTPUT); // signal B
pinMode(Pulse, OUTPUT); // XOR -output
digitalWrite(SignalOut, LOW); // reset outputs
digitalWrite(Delayed, LOW); //
digitalWrite(Pulse, LOW); //
} //
//
void loop() //
{ SignalA = digitalRead(SignalIn); // read signal line
digitalWrite(SignalOut, SignalA); // pass thru to indicator
if (SignalA == !SignalB) // if EXOR condition occurs
{ digitalWrite(Pulse, HIGH); // pulse indicator on
delay(500); // pulse length
digitalWrite(Pulse, LOW); // pulse incator off
SignalB = SignalA; // update delayed signal
digitalWrite(Delayed, SignalB); // pass thru to indicator
} //
} //

Berichten: 7
Geregistreerd: 30 Apr 2023, 13:37

Re: Vraagje van beginner

Berichtdoor hobbyist » 12 Mei 2023, 12:25

Ja is natuurlijk ook een goed idee om te zo te doen.
Maar mijn probleem met een pulsje op de op en neergaande flank is inmiddels opgelost met de hulp van shooter.
Ik heb echter nog een ander probleem met dit projectje.
Wellicht kan iemand daar enige hulp in beiden.
Zodra er spanning op UNO komt te staan gaat ie gelijk de code van regel 18 en regel 22 verzenden, en dat blijft ie doen.
Dit zou alleen mogen op de voorwaarde van regel 16 en 20.
De led10 werkt wel keurig op de pulsjes.
Zou iemand mij kunnen zeggen wat ik fout doe ?

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int buttonPin1 = 2;
const int ledPin10 = 10; // alleen voor test
int buttonstate1 = 0;
int lastbutton1=buttonstate1;
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(8);
pinMode(buttonPin1, INPUT); // alleen voor test
pinMode(ledPin10, OUTPUT); // alleen voor test
}
void loop() {
buttonstate1 = digitalRead(buttonPin1);
{ if (lastbutton1 != buttonstate1)
digitalWrite(ledPin10, HIGH);
mySwitch.send(2115473, 24);}
delay(400);
{ lastbutton1=buttonstate1;
digitalWrite(ledPin10, LOW);
mySwitch.send(2115481, 24); }
}

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

Re: Vraagje van beginner

Berichtdoor shooter » 12 Mei 2023, 22:39

na de if moet je de dingen wel tussen {}zetten
dus if(voorwaarde){actie bij waar}
paul deelen
shooter@home.nl

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

Re: Vraagje van beginner

Berichtdoor shooter » 12 Mei 2023, 22:39

doe een CTRL T dan wordt het wel duidelijk
paul deelen
shooter@home.nl

Berichten: 80
Geregistreerd: 02 Nov 2022, 13:03

Re: Vraagje van beginner

Berichtdoor ThHe » 14 Mei 2023, 11:26

Is dit misschien de oplossing:
Code: Alles selecteren
void loop() {
buttonstate1 = digitalRead(buttonPin1);
if (lastbutton1 != buttonstate1)
{
  if (buttonstate1 = 0)
  {
    digitalWrite(ledPin10, HIGH);
    mySwitch.send(2115473, 24);
  }
  else
  {
    digitalWrite(ledPin10, LOW);
    mySwitch.send(2115481, 24);
  }
  lastbutton1=buttonstate1;
}
delay(400);
}


Succes

Volgende

Terug naar Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten