Last active
December 17, 2015 10:29
-
-
Save radames/4cbce09601f13c96bd40 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| programa no python | |
| import serial | |
| s = serial.Serial("/dev/tty.usbmodemfd121",19200) | |
| //liga led botao | |
| s.write("1P") | |
| //apaga led botao | |
| s.write("0P") | |
| //pulsa led botao | |
| s.write("2P") | |
| */ | |
| #define NUM_LEDS 15 | |
| //pinos dos leds historias | |
| const int ledHpins[NUM_LEDS] ={ | |
| 22,24,26,28,30,32,34,36,38,40,42,44,46,48,50}; | |
| //pinos dos leds TImer | |
| const int ledTpins[NUM_LEDS] ={ | |
| 23,25,27,29,31,32,35,37,39,41,43,45,47,49,51}; | |
| //estados dos leds,0 apagado, 1 ligado, 2 piscante | |
| int ledsStates[NUM_LEDS]; | |
| //pino do led do botao com PWM | |
| const int buttonPin = 12; | |
| long lastTime=0; | |
| boolean pisca = false; | |
| long lastPulse = 0; | |
| // estado do botao | |
| int bState = 0; | |
| float a = 0; | |
| //marca tempo para o timer | |
| long lastTimerCount = 0; | |
| int startTimer =-1; | |
| int v = 0; | |
| int cmd; | |
| void setup(){ | |
| Serial.begin(19200); | |
| Serial.println("starting...."); | |
| for(int i=0; i< NUM_LEDS; i++){ | |
| pinMode(ledHpins[i],OUTPUT); | |
| pinMode(ledTpins[i],OUTPUT); | |
| ledsStates[i] = 0; | |
| } | |
| } | |
| void loop() { | |
| int c; | |
| if(Serial.available()){ | |
| c = Serial.read(); | |
| if ((c>='0') && (c<='9')) { | |
| v = 10*v + c - '0'; | |
| } | |
| else { | |
| if (c=='S'){ | |
| //seta o led em alto, de 0 a 14 | |
| ledsStates[v] = 1; | |
| digitalWrite(ledHpins[v],HIGH); | |
| } | |
| else if (c=='U') { | |
| //deslita um led de 0 a 14 | |
| //unset led v | |
| ledsStates[v] = 0; | |
| digitalWrite(ledHpins[v],LOW); | |
| } | |
| else if (c=='B') { | |
| // set o led de 0 a 14 para piscar a cada 250 ms | |
| //blink led v | |
| ledsStates[v] = 2; | |
| } | |
| else if(c=='P'){ | |
| //seta estado do botao | |
| // 0 desligado, 1 ligado, 2 pulsando | |
| bState = v; | |
| analogWrite(buttonPin, v==1?255:0); | |
| } | |
| else if(c=='T'){ | |
| //liga um decrementador para os leds | |
| //se statTimer > 0 decrementa a cada 1 segundo apagando os leds em sequencia | |
| //a partir da posicao enviada | |
| startTimer = v; //de 1 a 15 | |
| lastTimerCount = 0; | |
| } | |
| else if(c=='R'){ | |
| reset(); | |
| } | |
| v = 0; | |
| } | |
| } | |
| blink(); | |
| //se pulsa chama funcao timer para pulsos | |
| if(bState == 2){ | |
| pulse(); | |
| } | |
| if(startTimer >=0){ | |
| countDown(); | |
| for(int i=0;i<NUM_LEDS;i++){ | |
| Serial.print(digitalRead(ledTpins[i])); | |
| } | |
| Serial.println(); | |
| } | |
| } | |
| void reset(){ | |
| for(int i =0 ; i<NUM_LEDS;i++){ | |
| ledsStates[i] = 0; | |
| digitalWrite(ledHpins[i],LOW); | |
| } | |
| startTimer = -1; | |
| lastTimerCount = 0; | |
| bState = 0; | |
| analogWrite(buttonPin,0); | |
| } | |
| void countDown(){ | |
| for(int i=0;i<startTimer;i++){ | |
| digitalWrite(ledTpins[i],HIGH); | |
| } | |
| if(millis()-lastTimerCount > 1000){ | |
| for(int i=startTimer; i<NUM_LEDS; i++){ | |
| digitalWrite(ledTpins[i],LOW); | |
| } | |
| startTimer--; | |
| lastTimerCount = millis(); | |
| } | |
| } | |
| void blink(){ | |
| if(millis()-lastTime > 250){ | |
| pisca =!pisca; | |
| for(int i=0; i<NUM_LEDS; i++){ | |
| if(ledsStates[i] == 2){ | |
| //Serial.print(pisca,DEC); | |
| digitalWrite(ledHpins[i],pisca); | |
| } | |
| } | |
| ///Serial.println(); | |
| lastTime = millis(); | |
| } | |
| } | |
| void pulse() { | |
| if(millis() - lastPulse > 5){ | |
| a+=2*PI/(360); | |
| if(a>=2*PI){ | |
| a = 0; | |
| } | |
| float s = sin(a)*sin(a); | |
| int i = s*255; | |
| analogWrite(buttonPin, i); | |
| lastPulse = millis(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment