reset knop

Alles wat niet past in bovenstaande onderwerpen
Berichten: 4
Geregistreerd: 22 Apr 2021, 13:40

reset knop

Berichtdoor Paulschl » 03 Jun 2021, 20:40

Hallo,
ik ben nieuw in het Arduino wereldje, en ik moet zeggen ik ben enthousiast.
nu heb ik met cut/paste een programmatje gemaakt, en dat werkt leuk, een ca. 12 minuten timer met een 12 led rond display.
nu wil ik er echter een RESET knop aan toevoegen, maar ik weet niet echt waar die in de code moet komen.
dit is mijn code.

#include <Adafruit_NeoPixel.h>

#define BUTTON_PIN1 2 // Digital IO pin connected to the button. This will be
// driven with a pull-up resistor so the switch should
// pull the pin to ground momentarily. On a high -> low
// transition the button press logic will execute.
#define BUTTON_PIN2 3 // digital IO pin connected to the second button.
// same as BUTTON_PIN1 but now serves as stop/reset button
#define PIXEL_PIN 12 // Digital IO pin connected to the NeoPixels.

#define PIXEL_COUNT 12 // number of neopixel (change this accordingly)

// Parameter 1 = number of pixels in strip, neopixel stick has 8
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_RGB Pixels are wired for RGB bitstream
// NEO_GRB Pixels are wired for GRB bitstream, correct for neopixel stick
// NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
// NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

bool oldState = HIGH;
bool ResetState = HIGH;

int showType = 0;

void setup()
{
pinMode(BUTTON_PIN1, INPUT_PULLUP);
pinMode(BUTTON_PIN2, INPUT_PULLUP);

strip.setBrightness(40); // arduino 10 is een mooie waarde. 64 is veel te fel voor nano is 40 ok
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
void loop()
{
// Get current button state.
bool newState = digitalRead(BUTTON_PIN1);
bool ResetState = digitalRead(BUTTON_PIN2);

// Check if state changed from high to low (button press).
// from the button_pin1

if (newState == LOW && oldState == HIGH)
{
// Short delay to debounce button.
delay(20);
// Check if button is still low after debounce.
newState = digitalRead(BUTTON_PIN1);
ResetState = digitalRead(BUTTON_PIN2); // hier check ik de resetknop status

if (newState == LOW && ResetState == HIGH)
{
colorWipe(strip.Color(0, 255, 0), 50); // alles vullen met groen, een ledje per minuut
}
else
if (newState == LOW && ResetState == LOW)
{
strip.begin();
strip.show();
}
}

}
// na indrukken knop start de ring 1 voor 1 worden de leds groen
// max. tijd afhankelijk van numPixels, is hier 12

void colorWipe(uint32_t c, uint8_t wait)
{
for(uint16_t i=0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i, c);
strip.show();
delay(1000); // om te testen korte tijd
// delay(60000); // 1000=1 sec 60*1000 = 1 minuut

// 12 min zijn om.

}

}

wie helpt mij hiermee....?

bij voorbaat dank.

Advertisement

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

Re: reset knop

Berichtdoor shooter » 04 Jun 2021, 12:45

ergens detecteer je dus de reset en waar wil je dannaartoe?
omdat jij nog steeds delay gebruikt gaat dat niet werken, helaas zul je moeten kijken hoe timen zonder delay werkt bijvoorbeeld in de voorbeelden met blink without delay, even doorworstelen en je snapt hoe dat werkt, dan kun je dus supersnel schakelen
paul deelen
shooter@home.nl

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: reset knop

Berichtdoor ctunes » 06 Jun 2021, 21:32

shooter schreef:ergens detecteer je dus de reset en waar wil je dannaartoe?
omdat jij nog steeds delay gebruikt


Hé shooter, ben je overstag?

Delay is evil.

@OP, wat wil je dat de reset precies doet?

Vooralsnog lijkt de reset knop -die al aanwezig is- precies te doen wat jij wilt.

Berichten: 4
Geregistreerd: 22 Apr 2021, 13:40

Re: reset knop

Berichtdoor Paulschl » 06 Jun 2021, 22:32

Hallo shooter en ctunes,

met de reset/stop knop wil ik eigenlijk het programma stoppen, om het dan eventueel met de startknop opnieuw te starten.
ik begrijp inmiddels dat millis() beter is dan delay() maar daar moet ik me nog in gaan verdiepen.

elke vorm van hulp wordt iig zeer op prijs gesteld.
grt
Paul

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: reset knop

Berichtdoor ctunes » 12 Jun 2021, 20:16

Paulschl schreef:met de reset/stop knop wil ik eigenlijk het programma stoppen, om het dan eventueel met de startknop opnieuw te starten.


"Het programma" kun je niet stoppen en "eventueel" weer starten.

Het programma loopt altijd: "loop()", immers.

Om te bereiken wat jij wil kun je 2 dingen doen:

- Altijd kijken of een knop een bepaalde waarde heeft.
Dat kan met een zogenaamde bistabiele drukknop, ook wel bekend als een aan/uit knop.
of
- Je kunt de hardware laten slapen, net zolang tot er een wijziging in de status van de drukknop optreedt ...

Ik ga dat niet voordoen, je zal zelf moeten lezen rond het principe van: "interrupts".

Ik wil je wel helpen de code rond jouw idee in te vullen en je helpen bij te sturen waar nodig.

Terug naar Theekransje

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten