sexta-feira, 26 de abril de 2013
2º Projeto - Controle de Servo com Potenciômetro (exibindo a posição no lcd)
Neste projeto vamos controlar um servo utilizando um potenciômetro (projeto 25 do livro Arduino Básico de Michael McRoberts), porém, adicionei um lcd que ira mostrar a posição em graus do servo.
Materiais:
- Arduino Uno
- Servo motor (micro ou pequeno)
- 2 potenciômetros (100k para controlar o servo e 10k para ajustar o cursorlight do lcd)
- resistor limitador de corrente 220 ohm
- Display lcd 16x2 (verifique o datasheet do display para conectalo)
Código:
E sempre que você alterar o potenciômetro a posição do servo ira aparecer no lcd.
#include <Servo.h> // inclui a biblioteca servo
#include <LiquidCrystal.h> // inclui a biblioteca LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // pinos conectados ao lcd
Servo servo1; //cria um servo
void setup() {
servo1.attach(8); // Anexa o servo (físico), no pino 5, ao objeto servo (lógico)
lcd.begin(16,2); // declara um lcd com 16 colunas e 2 linhas
}
void loop() {
int angle = analogRead(0); // Lê o valor do potenciômetro
angle=map(angle, 0, 1023, 0, 179); // Mapeia os valores de 0 a 180 graus
servo1.write(angle); // Escreve o ângulo para o servo
delay(15); // Espera de 15ms, para permitir que o servo atinja a posição
lcd.setCursor(0,0); /* define a posição do cursor */
lcd.print("Angulo: "); // printa Angulo
lcd.setCursor(7,1);
lcd.print(angle); /* printa a leitura do angulo de 0 a 180 */
if(angle < 10) { // se for menor que 10 apaga os digitos "sobrando"
lcd.setCursor(8,1);
lcd.print(" ");
}
if(angle < 100){
lcd.setCursor(9,1);
lcd.print(" ");
}
}
quinta-feira, 25 de abril de 2013
1º Projeto - Bomba para Airsoft
Airsoft e um jogo onde os participantes usam armas de brinquedo semelhante ao paintball e fazem uma simulação de combate. Esta "bomba" e na verdade um dispertador ^^
Este primeiro projeto e bem simples, vamos utilizar um display lcd como menu, push buttons para selecionar as opções, led e um buzzer (para alertar que a contagem acabou e a bomba foi detonada).
Quero agradecer meu amigo meganha por ter me dado a dica de criar o blog!!
Este primeiro projeto e bem simples, vamos utilizar um display lcd como menu, push buttons para selecionar as opções, led e um buzzer (para alertar que a contagem acabou e a bomba foi detonada).
Materiais:
- Arduino Uno
- Display LCD 16x2
- 4 push buttons
- Buzzer 5v
- Led alto brilho vermelho
- Potenciometro de 10k ohm para ajustar o brilho do display (cursorlight)
- 7 resistores limitadores de corrente
- Fonte de alimentação externa
Código:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // entradas do lcdint buttonPushCounter = 0; // declara a variável contadoraint cutwire = 0; // push button que desativa a bomba
int cutwire1 = 0; // push button que detona a bombaint buttonState7 = 0; // push button que seleciona o tempoint buttonState8 = 0; // push button que ativa a bombaint lastButtonState = 0; // variavel para o ultimo estado do botãoint redled = 9; // ledint buzzer = 13; // buzzervoid setup(){pinMode(7, INPUT); //entradapinMode(8, INPUT);pinMode(6, INPUT);pinMode(10, INPUT);pinMode(redled, OUTPUT); //saidapinMode(buzzer,OUTPUT);lcd.begin(16,2); // inicia o display com 16 colunas e 2 linhaslcd.setCursor(0,0); // define a posição do cursorlcd.print("Tempo:");}void loop(){buttonState7 = digitalRead(7); // verifica o estado dos push buttonsbuttonState8 = digitalRead(8);cutwire = digitalRead(6);cutwire1 = digitalRead(10);if (buttonState7 != lastButtonState) { //verifica se o estado do botão foi //alteradoif (buttonState7 == HIGH){buttonPushCounter+=300; // incrementar um valor de 300delay(300);lcd.setCursor(7,1);lcd.print(buttonPushCounter); // printa o contadordelay(100);}}buttonState8 = digitalRead(8); // verifica se o botão foi pressionadoif(buttonState8 == HIGH){ //se sim inicia um laçowhile(buttonPushCounter != 0){buttonPushCounter = buttonPushCounter - 1; // enquanto o contador for //menor que 0 subtrai 1digitalWrite(redled, HIGH); // led acesodelay(500); //durante 500millisegundosdigitalWrite(redled, LOW); // led apagadodelay(500); //durante 500 millisegundos formando o laço de 1 em 1 //segundolcd.setCursor(0,0);lcd.print("Detonacao em:");lcd.setCursor(7,1);lcd.print(buttonPushCounter);if (buttonPushCounter < 10) // se a contagem for menor que 10{lcd.setCursor(8,1);lcd.print(" "); // apaga o digito "sobrando"}if (buttonPushCounter < 100){lcd.setCursor(9,1);lcd.print(" ");}if (buttonPushCounter < 1000){lcd.setCursor(10,1);lcd.print(" ");}if (buttonPushCounter < 10000){lcd.setCursor(11,1);lcd.print(" ");}cutwire = digitalRead(6);if (cutwire == HIGH && buttonPushCounter > 0) { //verifica se o botão //desativador foi precionado e se a contagem e maior que 0lcd.setCursor(0,0);lcd.print(" ");lcd.setCursor(1,0);lcd.print(" ");lcd.setCursor(0,1);lcd.print(" ");lcd.setCursor(3,0);lcd.print("Desativado ");break;}cutwire1 = digitalRead(10);if(cutwire1 == HIGH || buttonPushCounter <= 0){ //verifica se o botão //detonador foi precionado ou se a contagem chegou a zerolcd.setCursor(0,0);lcd.print(" ");lcd.setCursor(1,0);lcd.print(" ");lcd.setCursor(0,1);lcd.print(" ");lcd.setCursor(2,0);lcd.print("Terroristas ");lcd.setCursor(3,1);lcd.print("Venceram");for(int buzzer = 0;buzzer < 20 ; buzzer++){lcd.noDisplay(); // display desligadodelay(250);lcd.display(); // display ligadodelay(250);tone(13,1500);delay(500);noTone(13);delay(500);}break;}}}}
E isso ai galera o codigo e bem simples, vou deixar o link dele no http://pastebin.com/FiR6Lug1 e finalizo com um video:
Quero agradecer meu amigo meganha por ter me dado a dica de criar o blog!!
Assinar:
Postagens (Atom)