Confira aqui postagens sobre Arduino, Eletrônica e outros assuntos!
Youtube:
youtube.com/fabianoallex
Facebook:
facebook.com/dicasarduino
Publicidade:
quarta-feira, 8 de outubro de 2014
Arduino - Módulo de Leds (DIY)
Veja como fazer um módulo de leds para usar com Arduino ou qualquer outro circuito. Ótimo para testes.
terça-feira, 30 de setembro de 2014
Arduino - Dicas de Programação 04 - Orientação a Objetos
Exemplo de criação de código Orientado a Objetos a partir de um exemplo simples.
Nesse vídeo é mostrado como criar uma classe para controlar botões (pushbuttons).
Vídeo sobre liga/delisga e debounce:
Código-Fonte
Nesse vídeo é mostrado como criar uma classe para controlar botões (pushbuttons).
Vídeo sobre liga/delisga e debounce:
Código-Fonte
//############ CODIGO DA CLASSE BOTAO ################ class Botao { private: int _pino_botao; int _debounce_delay; int _leitura_anterior; int _leitura_anterior_db; long _time_ultimo_debounce; long _debounce_ok; bool _pressionou; bool _soltou; public: Botao(int pin, int debounce); void atualiza(); bool pressionou(); bool soltou(); long tempo_pressionado(); }; Botao::Botao(int pin, int debounce){ _pressionou = false; _soltou = false; _pino_botao = pin; _debounce_delay = debounce; pinMode(_pino_botao, INPUT); } void Botao::atualiza(){ int leitura_atual = digitalRead(_pino_botao); if (leitura_atual != _leitura_anterior ) { _time_ultimo_debounce = millis(); _debounce_ok = 0; } if ( (millis() - _time_ultimo_debounce) > _debounce_delay ) { _debounce_ok = 1; } if (_debounce_ok == 1) { _pressionou = (leitura_atual == 1 && _leitura_anterior_db == 0) ; _soltou = (leitura_atual == 0 && _leitura_anterior_db == 1) ; _leitura_anterior_db = leitura_atual; } _leitura_anterior = leitura_atual; } bool Botao::pressionou() { return _pressionou; } bool Botao::soltou() { return _soltou; } long Botao::tempo_pressionado() { if ( _leitura_anterior_db ) { return ( millis()-_time_ultimo_debounce ); } else { return 0; } } //############## FIM CODIGO DA CLASSE BOTAO ############# const int PINO_LED_1 = 8; const int PINO_LED_2 = 9; const int PINO_LED_3 = 10; Botao *b; //ponteiro para botao Botao *b2; //ponteiro para botao void setup() { b = new Botao(11, 100); //pino 11 , debounce time 100 b2 = new Botao(12, 100); //pino 12 , debounce time 100 Serial.begin(9600); } void loop() { b->atualiza(); //faz a leitura do estado do pino e atualiza as variaveis de controle if ( b->pressionou() ) { led_1(); Serial.println("pressionou"); } //liga led 1 if ( b->soltou() ) { led_2(); Serial.println("soltou"); } //liga led 2 if ( b->tempo_pressionado() > 3000 ) { led_3(); Serial.println("3 segundos"); } //aciona beep depois de 3 segundos pressionado b2->atualiza(); //faz a leitura do estado do pino e atualiza as variaveis de controle if ( b2->pressionou() ) { led_1(); Serial.println("pressionou"); } //liga led 1 if ( b2->soltou() ) { led_2(); Serial.println("soltou"); } //liga led 2 if ( b2->tempo_pressionado() > 3000 ) { led_3(); Serial.println("3 segundos"); } //aciona beep depois de 3 segundos pressionado } void led_1() { digitalWrite(PINO_LED_1, !digitalRead(PINO_LED_1)); } void led_2() { digitalWrite(PINO_LED_2, !digitalRead(PINO_LED_2)); } void led_3() { digitalWrite(PINO_LED_3, true); }
quarta-feira, 24 de setembro de 2014
Arduino - Controle Remoto - Reaproveitando Infravermelho de TV
Retirei uma plaquinha com um circuito de controle remoto de uma tv velha para usar com o Arduino.
O Circuito funcionou perfeitamente.
Para baixar a biblioteca, clique aqui:
Extraia a bilbioteca na pasta libraries do Arduino.
Para a versão 1.0 da IDE do Arduino, abra o arquivo "IRRemoteInt.h" com um editor de texto e troque a seguinte linha:
"#include <WProgram.h>"
para
"#include <Arduino.h>".
Código-Fonte:
O Circuito funcionou perfeitamente.
Para baixar a biblioteca, clique aqui:
Extraia a bilbioteca na pasta libraries do Arduino.
Para a versão 1.0 da IDE do Arduino, abra o arquivo "IRRemoteInt.h" com um editor de texto e troque a seguinte linha:
"#include <WProgram.h>"
para
"#include <Arduino.h>".
Código-Fonte:
/* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */ #include <IRremote.h>int RECV_PIN = 11; int RELAY_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; // Dumps out the decode_results structure. // Call this after IRrecv::decode() // void * to work around compiler issue //void dump(void *v) { // decode_results *results = (decode_results *)v void dump(decode_results *results) { int count = results->rawlen; if (results->decode_type == UNKNOWN) { Serial.println("Could not decode message"); } else { if (results->decode_type == NEC) { Serial.print("Decoded NEC: "); } else if (results->decode_type == SONY) { Serial.print("Decoded SONY: "); } else if (results->decode_type == RC5) { Serial.print("Decoded RC5: "); } else if (results->decode_type == RC6) { Serial.print("Decoded RC6: "); } Serial.print(results->value, HEX); Serial.print(" ("); Serial.print(results->bits, DEC); Serial.println(" bits)"); } Serial.print("Raw ("); Serial.print(count, DEC); Serial.print("): "); for (int i = 0; i < count; i++) { if ((i % 2) == 1) { Serial.print(results->rawbuf[i]*USECPERTICK, DEC); } else { Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC); } Serial.print(" "); } Serial.println(""); } void setup() { pinMode(RELAY_PIN, OUTPUT); pinMode(13, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } int on = 0; unsigned long last = millis(); void loop() { if (irrecv.decode(&results)) { // If it's been at least 1/4 second since the last // IR received, toggle the relay if (millis() - last > 250) { on = !on; digitalWrite(RELAY_PIN, on ? HIGH : LOW); digitalWrite(13, on ? HIGH : LOW); dump(&results); } last = millis(); irrecv.resume(); // Receive the next value } }
quinta-feira, 21 de agosto de 2014
Arduino - Dicas de Programação - 03
Mais dois vídeos com dicas de programação para arduino.
Inscreva-se no meu canal do youtube para ver mais vídeos como esse!
// Definindo variáveis
#define LED_A 2
#define LED_B 3
#define LED_C 4
#define LED_D 6
#define LED_E 7
#define LED_F 9
#define LED_G 8
// Delay entre letras (ms)
const int tempo=500;
void setup(){
pinMode(LED_A,OUTPUT);
pinMode(LED_B,OUTPUT);
pinMode(LED_C,OUTPUT);
pinMode(LED_D,OUTPUT);
pinMode(LED_E,OUTPUT);
pinMode(LED_F,OUTPUT);
pinMode(LED_G,OUTPUT);
}
void setDisplay(bool a, bool b, bool c, bool d, bool e, bool f, bool g){
digitalWrite(LED_A, a);
digitalWrite(LED_B, b);
digitalWrite(LED_C, c);
digitalWrite(LED_D, d);
digitalWrite(LED_E, e);
digitalWrite(LED_F, f);
digitalWrite(LED_G, g);
}
void setDisplay(char c){
setDisplay(0,0,0,0,0,0,0); //apaga tudo
// a b c d e f g
if (c == '0') { setDisplay(1,1,1,1,1,1,0); }
if (c == '1') { setDisplay(0,1,1,0,0,0,0); }
if (c == '2') { setDisplay(1,1,0,1,1,0,1); }
if (c == '3') { setDisplay(1,1,1,1,0,0,1); }
if (c == '4') { setDisplay(0,1,1,0,0,1,1); }
if (c == '5') { setDisplay(1,0,1,1,0,1,1); }
if (c == '6') { setDisplay(1,0,1,1,1,1,1); }
if (c == '7') { setDisplay(1,1,1,0,0,0,0); }
if (c == '8') { setDisplay(1,1,1,1,1,1,1); }
if (c == '9') { setDisplay(1,1,1,1,0,1,1); }
if (c == 'a' || c == 'A') { setDisplay(1,1,1,0,1,1,1); }
if (c == 'r' || c == 'R') { setDisplay(0,0,0,0,1,0,1); }
if (c == 'd' || c == 'D') { setDisplay(0,1,1,1,1,0,1); }
if (c == 'u' || c == 'U') { setDisplay(0,1,1,1,1,1,0); }
if (c == 'i' || c == 'I') { setDisplay(0,1,1,0,0,0,0); }
if (c == 'n' || c == 'N') { setDisplay(0,0,1,0,1,0,1); }
if (c == 'o' || c == 'O') { setDisplay(1,1,1,1,1,1,0); }
//fazer para os demais caracteres!!!
}
void showDisplayChar(char c, int timeOn, int timeOff, int atraso){
long resto = (millis()-atraso+100000) % (timeOn + timeOff);
if (resto < timeOn) { setDisplay(c); }
}
void showDisplayString(String s, int timeOn){
for (int i=0; i< s.length();i++){
showDisplayChar(s[i], timeOn, timeOn * s.length()-timeOn, (i-1)*timeOn );
}
}
void loop(){
showDisplayString("0123456789 ARDUINO ", tempo);
}
Inscreva-se no meu canal do youtube para ver mais vídeos como esse!
Assinar:
Postagens (Atom)