Springen naar inhoud


Arduino

Trap



Er zijn 2 reacties in dit onderwerp

#1 Swets

Swets

    Professional Developer

  • Leden
  • PipPipPipPip
  • 377 berichten
    Laatst bezocht 03 sep 2020 08:53
  • LocatieKrimpen a/d IJssel

Geplaatst op 14 februari 2018 - 21:53

https://www.youtube....h?v=RKRPY8RywWE

Code:
int vStairSteps = 14;												 // aantal treden
int O_nr[15] = {00, 44, 46, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};	 // output nummers in een array zette
int iDown = 22;														 // Nummer input PIR onderaan de trap
int iUp = 24;														 // Nummer input PIR bovenaan de trap
int ValFade[15];														 // huidige Fade waarden per tree onthouden
int vUpGestart = 0;
int vDownGestart = 0;
int BreakCnt = 0 ;
//-------------------------------------------------------------------------------------------------------------------------------
void setup() {
for (int i = 1 ; i <= 15; i++) {									 // alle PWM pinnen op output zetten
pinMode(O_nr[i], OUTPUT);
}
pinMode(iDown, INPUT);												 // PIR inputjes op ingang zetten
pinMode(iUp, INPUT);
digitalWrite(iDown, LOW);
digitalWrite(iUp, LOW);
Serial.begin(9600);												 // serieel verbinding straten voor eventueel debuggen
}
//-------------------------------------------------------------------------------------------------------------------------------
void loop() {
int vDown = 0;
int vUp = 0;

vDown = digitalRead(iDown);
vUp = digitalRead(iUp);
//Serial.print(vDown);
//Serial.println(vUp);
if ( vUp == 1 & vUpGestart == 0 & vDownGestart == 0)
{
vUpGestart = 1 ;
trap_op_aan( 1, 150);
}
if ( vDown == 1 & vDownGestart == 0 & vUpGestart == 0)
{
vDownGestart = 1 ;
trap_neer_aan( 1, 150);
}
if (vDown == 1 & vUpGestart == 1)
{
delay(2000);
trap_op_uit(10, 5, 20);
do {
	 delay(100);
} while (digitalRead(iDown) > 0 || digitalRead(iUp) > 0 );
vUpGestart = 0 ;
BreakCnt = 0;
}
if (vUp == 1 & vDownGestart == 1)
{
delay(2000);
trap_neer_uit(10, 5, 20);
do {
	 delay(100);
} while (digitalRead(iDown) > 0 || digitalRead(iUp) > 0 );
vDownGestart = 0 ;
BreakCnt = 0;
}
if (vUpGestart == 1)
{
delay(100);
BreakCnt = BreakCnt + 1;
if (BreakCnt > 300)
{
	 trap_op_uit(10, 5, 20);
	 vUpGestart = 0 ;
	 vDownGestart = 0 ;
	 BreakCnt = 0;
}
}
if (vDownGestart == 1)
{
delay(100);
BreakCnt = BreakCnt + 1;
if (BreakCnt > 300)
{
	 trap_neer_uit(10, 5, 20);
	 vUpGestart = 0 ;
	 vDownGestart = 0 ;
	 BreakCnt = 0;
}
}
}
//-------------------------------------------------------------------------------------------------------------------------------
//vStart = een drempel tussen de verschillende treden.. als deze op 0 staat zullen alle treden tegelijk uitfaden...
//staat deze op 50 ,zal elke tree apart uitfaden
//vStep = stap grote van het uit fade
//vSpeed = wachtlus
//-------------------------------------------------------------------------------------------------------------------------------
void trap_op_uit(int vStart, int vStep, int vSpeed)
{
int i = 1;																 // tel op, zolang nog niet alle treeden uit zijn
do {
for (int j = 1; j < vStairSteps + 1; j ++)							 // starten bij tree 1
{
	 if ( i > (j * vStart) )												 // waarde teller groter als drmpel * huidige tree
	 {
	 if (ValFade[j] > 0 )												 // Led al uit? nee dan verlagen
	 {
		 ValFade[j] = ValFade[j] - vStep;
		 analogWrite(O_nr[j], ValFade[j]);								 // Uitgang aansturen
	 }
	 }
}
i++;
delay(vSpeed);
} while ( ValFade[vStairSteps] > 0);									 // laatste tree Uit?
}
//-------------------------------------------------------------------------------------------------------------------------------
//vStart = een drempel tussen de verschillende treden.. als deze op 0 staat zullen alle treden tegelijk uitfaden...
//staat deze op 50 ,zal elke tree apart uitfaden
//vStep = stap grote van het uit fade
//vSpeed = wachtlus
//-------------------------------------------------------------------------------------------------------------------------------
void trap_neer_uit(int vStart, int vStep, int vSpeed)
{
int i = vStairSteps * vStart;
do {
for (int j = vStairSteps; j > 0; j--)									 // starten bij tree 14
{
	 if ( i < (j * vStart) )
	 {
	 if (ValFade[j] > 0 )
	 {
		 ValFade[j] = ValFade[j] - vStep;
		 analogWrite(O_nr[j], ValFade[j]);
	 }
	 }
}
i--;
delay(vSpeed);
} while ( ValFade[1] > 0);												 // laatste tree Uit?
}
//-------------------------------------------------------------------------------------------------------------------------------
void trap_op_aan (int vStep, byte speed)
{
for (int i = 1 ; i < vStairSteps + 1 ; i++ ) {							 // lus welke al de treeden afgaat (van onder(1) naar boven(14)
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += vStep) {		 // lus welke de PWM output van de tree aanzet
	 ValFade[i] = fadeValue;
	 analogWrite(O_nr[i], ValFade[i]);
	 delayMicroseconds(speed);
}
}
}
//-------------------------------------------------------------------------------------------------------------------------------
void trap_neer_aan (int vStep, byte speed)
{
for (int i = vStairSteps ; i > 0 ; i-- ) {								 // lus welke al de treeden afgaat (van boven(14) naar onder(1)
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += vStep) {		 // lus welke de PWM output van de tree aanzet
	 ValFade[i] = fadeValue;
	 analogWrite(O_nr[i], ValFade[i]);
	 delayMicroseconds(speed);
}
}
}




meer info:
https://www.arjan-sw.../main/Trap.html

#2 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3604 berichten
    Laatst bezocht gisteren, 12:56
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 15 februari 2018 - 00:08

nice !!

#3 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 05 feb 2020 07:09
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 22 februari 2018 - 18:05

Mooi kerel maar wel van een bestaand idee.
Blijft altijd leuk om zoiets te zien.



Reageer op dit onderwerp



  



Ook met taq Arduino voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[Arduino] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)