Alguns vídeos mostrando como jogar sudoku.
Inscreva-se no meu canal do youtube para ver mais vídeos como esse!
Confira aqui postagens sobre Arduino, Eletrônica e outros assuntos!
Youtube:
youtube.com/fabianoallex
Facebook:
facebook.com/dicasarduino
int PIN_ENTRADA = A0;
int PIN_SAIDA_1 = 3;
int PIN_SAIDA_2 = 4;
int PIN_SAIDA_3 = 5;
int PIN_SAIDA_4 = 6;
void setup(void) {
Serial.begin(9600);
pinMode(PIN_SAIDA_1, OUTPUT);
pinMode(PIN_SAIDA_2, OUTPUT);
pinMode(PIN_SAIDA_3, OUTPUT);
pinMode(PIN_SAIDA_4, OUTPUT);
}
void loop(void) {
int val_entrada = analogRead(PIN_ENTRADA);
float voltagem = val_entrada * (5 / 1023.0);
Serial.println(voltagem);
trataEntrada(voltagem);
delay(100);
}
void trataEntrada(float v){
int led1, led2, led3, led4;
led1 = led2 = led3 = led4 = 0;
if (v >= 0.40 && v < 0.84) {led1 = 0; led2 = 0; led3 = 0; led4 = 1;}
if (v >= 0.84 && v < 1.21) {led1 = 0; led2 = 0; led3 = 1; led4 = 0;}
if (v >= 1.21 && v < 1.56) {led1 = 0; led2 = 0; led3 = 1; led4 = 1;}
if (v >= 1.56 && v < 1.83) {led1 = 0; led2 = 1; led3 = 0; led4 = 0;}
if (v >= 1.83 && v < 2.06) {led1 = 0; led2 = 1; led3 = 0; led4 = 1;}
if (v >= 2.06 && v < 2.25) {led1 = 0; led2 = 1; led3 = 1; led4 = 0;}
if (v >= 2.25 && v < 2.44) {led1 = 0; led2 = 1; led3 = 1; led4 = 1;}
if (v >= 2.44 && v < 2.60) {led1 = 1; led2 = 0; led3 = 0; led4 = 0;}
if (v >= 2.60 && v < 2.73) {led1 = 1; led2 = 0; led3 = 0; led4 = 1;}
if (v >= 2.73 && v < 2.85) {led1 = 1; led2 = 0; led3 = 1; led4 = 0;}
if (v >= 2.85 && v < 2.96) {led1 = 1; led2 = 0; led3 = 1; led4 = 1;}
if (v >= 2.96 && v < 3.06) {led1 = 1; led2 = 1; led3 = 0; led4 = 0;}
if (v >= 3.06 && v < 3.15) {led1 = 1; led2 = 1; led3 = 0; led4 = 1;}
if (v >= 3.15 && v < 3.23) {led1 = 1; led2 = 1; led3 = 1; led4 = 0;}
if (v >= 3.23 && v < 5.00) {led1 = 1; led2 = 1; led3 = 1; led4 = 1;}
if (led1) { digitalWrite(PIN_SAIDA_1, HIGH); } else { digitalWrite(PIN_SAIDA_1, LOW); }
if (led2) { digitalWrite(PIN_SAIDA_2, HIGH); } else { digitalWrite(PIN_SAIDA_2, LOW); }
if (led3) { digitalWrite(PIN_SAIDA_3, HIGH); } else { digitalWrite(PIN_SAIDA_3, LOW); }
if (led4) { digitalWrite(PIN_SAIDA_4, HIGH); } else { digitalWrite(PIN_SAIDA_4, LOW); }
}
int PIN_ENTRADA = A0;
int PIN_SAIDA_1 = 8;
int PIN_SAIDA_2 = 9;
int PIN_SAIDA_3 = 10;
int PIN_SAIDA_4 = 11;
float vcc = 5;
float modo_1_voltagem = 4.55; // 100 / (100+10) * 5
float modo_2_voltagem = 4.16; // 100 / (100+20) * 5
float modo_3_voltagem = 3.84; // 100 / (100+30) * 5
float modo_4_voltagem = 3.57; // 100 / (100+40) * 5
int modo_saida = 0; //0: desliga
//variaveis para controle de liga e desliga
const long DEBOUNCE_DELAY = 100;
int pino_anterior = 0; //armazena o status da leitura no loop anterior
int pino_anterior_db = 0;
long time_ultimo_debounce = 0;
int debounce_ok = 1;
void setup(void) {
Serial.begin(9600);
pinMode(PIN_ENTRADA, INPUT);
pinMode(PIN_SAIDA_1, OUTPUT);
pinMode(PIN_SAIDA_2, OUTPUT);
pinMode(PIN_SAIDA_3, OUTPUT);
pinMode(PIN_SAIDA_4, OUTPUT);
}
void loop(void) {
int val_entrada = analogRead(PIN_ENTRADA);
float voltagem = val_entrada * (vcc / 1023.0);
setModoSaida(voltagem);
mostraSaida();
if (voltagem > 2.00) {
//Serial.println(voltagem);
}
delay(10);
}
void setModoSaida(float v){
modo_saida = 0;
if (( v >= ( (modo_1_voltagem + modo_2_voltagem)/2) )) { modo_saida = 1; }
if (( v >= ( (modo_2_voltagem + modo_3_voltagem)/2 )) && ( v < ( (modo_1_voltagem + modo_2_voltagem)/2) )) { modo_saida = 2; }
if (( v >= ( (modo_3_voltagem + modo_4_voltagem)/2 )) && ( v < ( (modo_2_voltagem + modo_3_voltagem)/2) )) { modo_saida = 3; }
if (( v >= ( modo_4_voltagem * 0.9 )) && ( v < ( (modo_3_voltagem + modo_4_voltagem)/2) )) { modo_saida = 4; }
}
void mostraSaida(){
int pino = 0;
if (modo_saida == 0) { pino = 0; }
if (modo_saida == 1) { pino = PIN_SAIDA_1; }
if (modo_saida == 2) { pino = PIN_SAIDA_2; }
if (modo_saida == 3) { pino = PIN_SAIDA_3; }
if (modo_saida == 4) { pino = PIN_SAIDA_4; }
if ( pino != pino_anterior ) { time_ultimo_debounce = millis(); debounce_ok = 0; }
if ( (millis() - time_ultimo_debounce) > DEBOUNCE_DELAY ) { debounce_ok = 1; }
Serial.print("pino: " );
Serial.print(pino);
Serial.print(" - pino ant: ");
Serial.print(pino_anterior);
Serial.print(" - pino ant db: ");
Serial.print(pino_anterior_db);
Serial.println("");
if (debounce_ok == 1){
if (pino > 0 && pino_anterior_db == 0){
digitalWrite(pino, !digitalRead(pino));
}
pino_anterior_db = pino;
} else {
pino_anterior_db = 0;
pino_anterior = 0;
}
pino_anterior = pino;
}
const int PINO_LED_1 = 3;
const int PINO_LED_2 = 5;
const int PINO_LED_3 = 6;
const int PINO_LED_4 = 9;
void setup() {
pinMode(PINO_LED_1, OUTPUT);
pinMode(PINO_LED_2, OUTPUT);
pinMode(PINO_LED_3, OUTPUT);
pinMode(PINO_LED_4, OUTPUT);
}
void loop() {
piscaLedFade(PINO_LED_1, 2000, 1500, 000, 1000, 1000);
piscaLedFade(PINO_LED_2, 2000, 1500, 200, 1000, 1000);
piscaLedFade(PINO_LED_3, 4000, 1500, 400, 1000, 1000);
piscaLedFade(PINO_LED_4, 4000, 1500, 600, 1000, 1000);
}
void piscaLedFade(int pin, int timeOn, int timeOff, int atraso, int timeFadeOn, int timeFadeOff){
long resto = (millis()-atraso) % (timeOn + timeOff);
long fade = (resto < timeOn ? 255 : 0);
if (fade > 0){
if ( timeFadeOn > resto ) { fade = resto * 255 / timeFadeOn; }
if ( (timeOn-timeFadeOff) < resto ) { fade = (timeOn-resto) * 255 / timeFadeOff; }
}
analogWrite(pin, fade);
}