kinderkamerverlichting

algemene C code
Berichten: 2
Geregistreerd: 29 Aug 2016, 17:53

kinderkamerverlichting

Berichtdoor ZONLUC » 30 Aug 2016, 17:30

om in de kinderkamer het licht langzaam te dimmen heb ik een dimmer met een analoog signaal van 0..5 volt
kan iemand mij helpen om met arduino een signaal op te wekken van 0..5 volt gedurende 60 minuten
dank u

Advertisement

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

Re: kinderkamerverlichting

Berichtdoor nicoverduin » 30 Aug 2016, 19:06

Zoiets?
cpp code
#include "Arduino.h"
//
// defines
//
#define PWM 3 // pin3 is een PWM pin
#define DUUR 60L // per minuut verlagen = 60 seconden
#define TOTALE_DUUR 3600L // totale dim tijd is 3600 seconden = 1 uur
//
// globals
//
uint32_t timer; // timer
float pwmWaarde; // waarde naar de PWM eerst in floats omdat PWM ophoogt met iets van 4.25 per minuut
int16_t pwmToPort; // werkelijke waarde naar de PWM
int16_t oldPwmToPort; // om te voorkomen dat we 2x dezelfde waarde naar de analoge poort schrijven
float stap = 255 / ((float)TOTALE_DUUR / (float)DUUR); // pwm stapjes.
bool timerMoetLopen; // timer loopt alleen als deze true is

void setup()
{
pinMode(PWM, OUTPUT); // PWM pin op output
timer = millis(); // start de timer
pwmWaarde = 255.0; // startwaarde is max 255
pwmToPort = (uint8_t) pwmWaarde; // max waarde in het begin
analogWrite(PWM, pwmToPort); // schrijf naar pwm poort
oldPwmToPort = (uint8_t) pwmWaarde; // max waarde in het begin
timerMoetLopen = true; // start de timer

Serial.begin(9600);
Serial.println(pwmToPort);
}

void loop()
{
if (timerMoetLopen) {
//
// check de timer of deze is verlopen
//
if ((millis() - timer) > (DUUR * 1000L) ) {
//
// periode verlopen dus pwm verlagen met stap
//
pwmWaarde = pwmWaarde - stap;

if (pwmWaarde < 0) {
pwmWaarde = 0;
}
//
// maak van de float een 8 bit unsigned int
//
pwmToPort = (uint8_t)pwmWaarde;
//
// schrijf naar PWM als deze is veranderd
// en gelijk bewaren voor de volgende keer
//
if (pwmToPort != oldPwmToPort) {
analogWrite(PWM, pwmToPort);
oldPwmToPort = pwmToPort;

Serial.println(pwmToPort);

}
if (pwmToPort != 0) {
//
// start de timer opnieuw
//
timer = millis();
} else {
//
// klaar
//
timerMoetLopen = false;
}
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 2
Geregistreerd: 29 Aug 2016, 17:53

Re: kinderkamerverlichting

Berichtdoor ZONLUC » 31 Aug 2016, 18:04

Dank u wel, ik heb weer even tijd gevonden om te testen en het resultaat is wat ik had gehoopt heel goed dus, nu nog een start en stopknop bijinstellen en ook omgekeerd maar ik moet eerst naar dokter omdat kinderen nu eenmaal vlugger vallen en dan soms nog verkeerd maar ik ben al heel tevreden over jullie

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten