Simpel programma

Arduino specifieke Software
Berichten: 3
Geregistreerd: 11 Nov 2017, 22:04

Simpel programma

Berichtdoor daantjuuh1992 » 11 Nov 2017, 22:10

Hallo forumgebruikers.

Ik wil graag een eenvoudig programma maken met een Arduino UNO board, maar het wil mij niet lukken.

Wat ik wil:
Ik heb een projectiescherm dat geschakeld wordt met een KlikAanKlikUit systeem. (omhoog of omlaag).
Wanneer ik nu het scherm naar beneden doe, blijft er 2 minuten lang spanning op naar beneden staan.
Mijn scherm gaat dan te ver naar beneden, dus ik moet hem handmatig stoppen.
Ik wil graag dat op het moment dat ik het scherm naar beneden druk, het scherm een precies aantal seconden naar beneden gaat, en vervolgens alleen nog maar omhoog kan met de andere knop.
Wanneer het scherm dus beneden is en ik druk opnieuw op naar beneden, moet er niets gebeuren.

Het KlikAanKlikUit systeem kan een 5v puls sturen in plaats van een 230v puls.
Ik heb een 4 kanaals relais bord wat ik kan aansluiten op mijn Arduino, dit werkt ook.

Ik kom er zelf niet uit hoe ik dit moet programmeren. Ik heb al verschillende dingen geprobeerd met if en when functies, maar iedere keer werkt het niet naar behoren.
Wat doe ik fout?

Met vriendelijke groet,
Daniel Hartman

Advertisement

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

Re: Simpel programma

Berichtdoor shooter » 12 Nov 2017, 23:24

even wachten tot fons een keer je bericht ziet, en het scherm is simpel te beeiligen zodat het stopt als het scherm boven/benden is, zeker met een arduino.
fons kent kaku en arduino
paul deelen
shooter@home.nl

Berichten: 49
Geregistreerd: 31 Mrt 2017, 22:23
Woonplaats: Soesterberg

Re: Simpel programma

Berichtdoor Kamh » 21 Nov 2017, 23:16

Hallo Daniel,

Zal niet eenvoudig zijn, je zal een gewone electromotor voor de beweging gebruiken. Die draaien niet altijd het zelfde toerental/omwentelingen voor een beweging. Loopt de ene keer trager dan de andere door bijv. temperatuur. (Lagervet dik of dun bijv. of stof dat in de loop der tijd erin komt. ) Daarvoor moet er een decoder schijf opzitten die het aantal omwentelingen telt, dan kun je exact een aantal opgeven dus precies X pulsen omhoog of X pulsen omlaag. Voor jouw lijkt het me handiger een endswitch ( gewoon een microswitch) erbij te gebruiken. Zodra het hoogste punt of laagste punt bereik wordt volgt een reset van de tijd. Dat kun je natuurlijk ook in de software opnemen. via 1 input kan dit al. Je bent dan zelfs niet meer aan tijd gebonden maar aan gewoon "stop" via de endswitch, en start met de hand.

Groetend
Kees

Berichten: 3
Geregistreerd: 11 Nov 2017, 22:04

Re: Simpel programma

Berichtdoor daantjuuh1992 » 22 Nov 2017, 00:59

Hallo Kees,

Dankjewel voor je reactie.
Het scherm dat ik gebruik is al voorzien van een elektromotor.
Als het scherm soms enkele centimeters hoger of lager eindigt is dit niet zo erg.
Ik ben al begonnen met een script in de Arduino Editor, maar ik krijg het niet werkend helaas.

Dit is het script dat ik tot nu toe heb:
Code: Alles selecteren
// Buttons
int pinButtonUp = 2;
int pinButtonDown = 4;

// Relais channel 1 (screen up)
int pinScreenUp = 11;

// Relais channel 2 (screen down)
int pinScreenDown = 12;

boolean isButtonUpPressed() {
return (digitalRead(pinButtonUp) == HIGH);
}
boolean isButtonDownPressed() {
return (digitalRead(pinButtonDown) == HIGH);
}

void moveScreenDown() {
    digitalWrite(pinScreenDown, LOW);
}
void moveScreenUp() {
    digitalWrite(pinScreenUp, LOW);
}
void stopScreenDown() {
    digitalWrite(pinScreenDown, HIGH);
}
void stopScreenUp() {
    digitalWrite(pinScreenUp, HIGH);
}

void setup() {
  pinMode(pinScreenDown, OUTPUT);
  pinMode(pinScreenUp, OUTPUT);
  pinMode(pinButtonDown, INPUT);
  pinMode(pinButtonUp, INPUT);
}

void loop() {
    if(isButtonDownPressed()) {
       moveScreenDown();
       delay(1000);
       stopScreenDown();
}

if(isButtonUpPressed()) {
       moveScreenUp();
       delay(1000);
       stopScreenUp();
}
}

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Simpel programma

Berichtdoor Koepel » 22 Nov 2017, 10:41

Ik zie dat je programmeer-kennis hebt, dat is mooi.
Wat ontbreekt is specifieke Arduino kennis en hoe je een vraag stelt op een forum :lol:

De Arduino kan zelf ook gekoppeld worden aan het draadloze klik-uit-klik-aan. Dus je vraag was niet helemaal duidelijk.
Met een 433MHz zender of ontvanger en deze library: https://bitbucket.org/fuzzillogic/433mhzforarduino/wiki/Home kun je de Arduino met de klik-aan-klik-uit mee laten doen.

Voor dit forum is het nodig dat wij een idee krijgen van wat jij hebt.
Je zou een schets kunnen maken of een foto om duidelijk te maken wat je hebt.
Als iets niet werkt, dan zou je dat beter kunnen beschrijven. Als jij schrijft dat het niet naar behoren werkt, dan krijg je misschien flauwe opmerkingen zoals: wat werkt er niet naar behoren ? gaan de lantaarnpalen in het nabijgelegen dorp knipperen als je 5 minuten niet op een knop drukt ?

Wat zit er aan de ingang van de Arduino ? Is dat een echte knop of iets van het klik-uit-klik-aan systeem ?

Stel dat aan de ingang iets van het klik-uit-klik-aan zit, en dat die langer aktief is dan 1 seconde. Dan wordt dat deel van je sketch meerdere malen uitgevoerd. Dan is het nodig om alleen het moment dat die ingang aktief wordt te detecteren: https://www.arduino.cc/en/Tutorial/StateChangeDetection.

Wanneer je 10 minuten tijd hebt, kijk dan alvast eens hier naar: https://www.arduino.cc/en/tutorial/BlinkWithoutDelay.
Wanneer je millis() gebruikt in plaats van delay(), dan kun je met een knop iets stoppen dat bezig is.

Berichten: 3
Geregistreerd: 11 Nov 2017, 22:04

Re: Simpel programma

Berichtdoor daantjuuh1992 » 01 Dec 2017, 17:30

Het is gelukt!

Mijn script was wel goed, de fout die ik gemaakt heb is dat ik vergeten ben om een pull down weerstand na de KlikAanKlikUit te plaatsen.
Hierdoor werden beide schakelingen continu geschakeld.
Het werkt nu zoals het hoort, bedankt voor de reacties!

Mvg Daniel

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: acaftajodaw en 17 gasten