Nesse vídeo mostro alguns detalhes sobre como ligar uma lâmpada com Arduino. Em breve postarei a segunda parte, mostrando o circuito montado e o código implementado.
Alguns meses atrás fiz um vídeo mostrando como fazer sabão caseiro em uma garrafa pet, de maneira bem simples e fácil, utilizando soda líquida. O problema dessa receita, é que as vezes é difícil encontrar a soda líquida em alguns mercados. Então resolvi fazer a mesma receita utilizando soda em escamas. Para isso foi necessário dissolver a soda antes de utilizá-la. Nesse vídeo como fazer o procedimento de maneira a diminuir os riscos e que também seja fácil e rápido.
Espero que gostem, abraços.
aproveitem para se inscrever no canal também!
Esse vídeo mostra como troquei a tela de um tablet Genesis GT 7325.
Se tiver alguma dúvida leve a uma assistência técnica. Só realize a troca caso tenha absoluta certeza de que vá conseguir fazer pois sempre há o risco de danificar ainda mais o aparelho.
cuidado com os resíduos de vidro que caem sobre a mesa, eles podem riscar a tela nova. Após remover o vidro quebrado, limpe a mesa e só então pegue a tela nova.
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
//############ 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); }
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:
/*
* 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
}
}
Troca somente do vidro do meu Galaxy S3. Levei em várias assistências aqui em Cuiabá/MT e todos disseram que não era possível a troca somente do vidro.
Inscreva-se no meu canal do youtube para ver mais vídeos como esse!
Este vídeo mostra como fazer um push button que com um toque inverte uma saída, ligando ou desligando um led e como fazer para tratar os ruídos (Bounce) que causam resultados indesejados. o vídeo também mostra os dois momentos que podem ser alterados o status do led. ao pressionar o botão, ou ao soltar o botão.
Nesse vídeo eu mostro uma forma de fazer alguns leds piscarem de maneira mais simples e mais inteligente e sem o uso de delays. veja um exemplo de uso dessa função em um semáforo: http://youtu.be/Vcqu6LgkIAM
Essa é uma receita simples de uma massa pra pesca de tambacu. A primeira vez que fiz já faz bastante tempo, mas funcionou bem, e essa do vídeo fiz pela segunda vez e também funcionou. provavelmente não é a melhor isca para esses peixes, mas ela é bem fácil de fazer, sem necessidade de procurar ingredientes difíceis, e fica bem firme no anzol. ingredientes: - Farinha de rosca; - Farinha de trigo; - leite; - mel. não há uma quantidade exata para cada ingrediente, mas a quantidade das duas farinhas deve ser igual. adicione leite as duas farinhas e vá misturando, e adicione o mel aos pouco. enquanto a massa não obtiver a consistência adequada, vá adicionando mais farinha de trigo. faça as bolinhas, depois as coloque na água fervendo até comecem a boiar, ou ficar rolando dentro da água. tire da água e depois passe as iscas em um pouco de farinha, para que elas não grudem uma na outra. o resultado final, deve ser uma bolinha bem firme e que ao cair no chão deve quicar.
Atenção: não corra o mesmo risco que eu, de manusear a soda sem luvas. Receita de sabão mais simples, fácil de fazer, sem sujeira e em menos de dez minutos está pronto pra enformar. essa receita é ideal pra quem usa pouco óleo e não precisa esperar juntar uma quantidade grande de óleo ou pra quem não tem muito espaço e pra quem não quer gastar muito tempo fazendo, além de não precisar usar baldes e pedaços de pau pra mexer o sabão e nem fazer muita sujeira.
Com esse sabão já pronto, é possível fazer sabão em pó, apenas utilizando um ralador. Veja o vídeo abaixo:
Esse vídeo mostra como configurar várias entradas em um mesmo pino no Arduino. esse circuito identifica apenas um botão por vez. se for pressionado mais de um botão de uma vez, o circuito vai entender que o botão pressionado é aquele por onde a corrente passa com menor resistência e ignora os demais botões.
Como fazer um botão on-off utilizando um Latch RS com transistores. antes de ver esse vídeo, veja sobre o latch RS com transistores: http://youtu.be/tIwtrlrUNR0
Montagem
componentes: - 2 resistores de 820 ohms -2 resistores de 10 K ohms -2 capacitores de 10uF -1 resistor de 100 ohms -2 transistores BC548 -2 leds -1 botão
Tratamento de ruídos - debouncing
Inscreva-se no meu canal do youtube para mais vídeos como esse!
Esse vídeo mostra como piscar vários leds incluindo efeito de fade (aumento de brilho gradual). veja o primeiro vídeo - como piscar led sem delay: http://youtu.be/R3mn7Vw9g2Y
Inscreva-se no meu canal do youtube para mais vídeos como esse! Código:
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);
}
Exemplo de um sistema de semáforo sem o uso de delay. veja o vídeo que explica o funcionamento da função piscaLed: http://youtu.be/R3mn7Vw9g2Y veja outro video sobre como piscar led com efeito de fade: http://youtu.be/73J720qipo0
Inscreva-se no meu canal do youtube para mais vídeos como esse!
Outro exemplo de semáforo (agora para pedestre) com as funções piscaLed, sem o uso de delay, apenas usando a função millis. veja o outro vídeo sobre semaforo: http://youtu.be/Vcqu6LgkIAM veja o vídeo explicativo sobre a função piscaLed: http://youtu.be/R3mn7Vw9g2Y veja um exemplo de pisca led com efeito de fade (pwm): http://youtu.be/73J720qipo0
Inscreva-se no meu canal do youtube para mais vídeos como esse!
Segundo vídeo com dicas de programação em Arduino. Dicas simples pra quem está começando a programar em arduino. As dicas são baseadas em explicações e melhorias de sketchs publicados na internet. para ver o vídeo original, entre no link abaixo: http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-a-chave-optica