Voila j'ai fait ce petit projet visant à équiper mon quadcopter il s'agit de 4 rubans leds (ledstrip). Voila je mesure le signal venant de mon recepteur RC mais j'aimerais plutot faire une interruption lorsque par exemple le signal depasse un certain niveau. J'utilise la pin 13 en input pour mesurer le signal provenant du recepteur rc.
Alors actuellement j'arrive a changer de programme mais je suis obliger d'attendre la fin du programme pour appuyer et des fois je bascule d'un programme en sautant un programme.
Comment je pourrais faire pour utiliser une timer ou une interruption sur ma pin 13. J'ai deja tester une interruption sur un bouton avec arduino et faire ca sur un pwm j'en ai aucune idée.
Ps: sur ce projet il ne me reste plus qu'une pin digital la 13. sachant que le projet final sera sur une nano arduino.
Un petite vidéo de mon projet
http://www.youtube.com/watch?v=z0tVXN7LJkU
#include <SoftPWM.h> int pwmrouge; int pwmvert; int pwmbleu; int PulseRc; int Prog; int i; int ledstrip; void setup() { // Initialize SoftPWMBegin(); // Create and set pin 13 to 0 (off) SoftPWMSet(12, 0); pwmrouge = 0; pwmvert = 0; pwmbleu = 0; pinMode(13, INPUT); Prog=1; } void LedRGB(int pwmrouge, int pwmvert, int pwmbleu, int ledstrip) { if (ledstrip==1){ SoftPWMSetPercent(3, pwmbleu); SoftPWMSetPercent(2, pwmvert); SoftPWMSetPercent(1, pwmrouge); } if (ledstrip==2){ SoftPWMSetPercent(6, pwmbleu); SoftPWMSetPercent(5, pwmvert); SoftPWMSetPercent(4, pwmrouge); } if (ledstrip==3){ SoftPWMSetPercent(9, pwmbleu); SoftPWMSetPercent(8, pwmvert); SoftPWMSetPercent(7, pwmrouge); } if (ledstrip==4){ SoftPWMSetPercent(12, pwmbleu); SoftPWMSetPercent(11, pwmvert); SoftPWMSetPercent(10, pwmrouge); } if (ledstrip==5){ SoftPWMSetPercent(12, pwmbleu); SoftPWMSetPercent(11, pwmvert); SoftPWMSetPercent(10, pwmrouge); SoftPWMSetPercent(9, pwmbleu); SoftPWMSetPercent(8, pwmvert); SoftPWMSetPercent(7, pwmrouge); SoftPWMSetPercent(6, pwmbleu); SoftPWMSetPercent(5, pwmvert); SoftPWMSetPercent(4, pwmrouge); SoftPWMSetPercent(3, pwmbleu); SoftPWMSetPercent(2, pwmvert); SoftPWMSetPercent(1, pwmrouge); } } void loop() { // Turn on - set to 100% PulseRc = pulseIn(13, HIGH, 25000); if (PulseRc>1200){ Prog++; } if (Prog>2){Prog=1;} if (Prog==1){ LedRGB(100, 0, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 0, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100,0, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0,100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0,0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(0, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 100, 0, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); LedRGB(100, 0, 100, 5); delay(100); LedRGB(0, 0, 0, 5); delay(50); } if (Prog==2){ pwmrouge = random(0,100); pwmvert = random(0,100); pwmbleu = random(0,100); for(i=4 ; i>=1 ; i--) { LedRGB(pwmrouge, pwmvert, pwmbleu, i); delay(40); LedRGB(0, 0, 0, i); delay(20); LedRGB(pwmrouge, pwmvert, pwmbleu, i); delay(40); LedRGB(0, 0, 0, i); delay(20); LedRGB(pwmrouge, pwmvert, pwmbleu, i); delay(40); LedRGB(0, 0, 0, i); delay(20); LedRGB(pwmrouge, pwmvert, pwmbleu, i); delay(40); LedRGB(0, 0, 0, i); delay(20); } i=4; } }
Avez vous une idée sur comment je pourrais faire pour avoir un changement de programme net et sans attendre la fin de la boucle ...
Cordialement,
bypbop