Material:
- Arduino
- Protoboard
- Fios Jumpers
- Transistor NPN BD139
- Motor CC
- display de 7 segmentos (Ânodo comum)
- 2 pusshbottons
- 3 Resistores 220ohms
- 2 pilhas pequenas
Esquema:
Código:
int motorPin = 3; //Motor conectados ao pino 3
int acePin = 4; //Pushbotton para ascelerar conectado no pino 4
int decPin = 5; //Pushbotton para desascelerar conectado no pino 5
int val = 0; //Valor 0 para motor
int aceButton = LOW; //valor zerado no push de ascelerar
int decButton = LOW; //Valor zarado no push de desascelerar
int displayA = 6;
int displayB = 7;
int displayC = 8;
int displayD = 10;
int displayE = 11;
int displayF = 12;
int displayG = 13;
void setup(){
pinMode(acePin, INPUT); //Pino de acelerar setado como entrada
pinMode(decPin, INPUT); //Pino de desascelerar setado como entrada
pinMode(motorPin, OUTPUT); //Motor setado como sáida
analogWrite(motorPin, 0); //Valor zerado no motor
Serial.begin(9600); //Valor do serial para transferencia de dados
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
aceButton = digitalRead(acePin); //Ler valor de push para ascelerar
decButton = digitalRead(decPin); //Ler o valor do push para desascelerar
if(aceButton == HIGH) //Ao acionar o push de acelerar seta o motor
{
val=val-1; //incrementa um valor
}
if(val<=0){
digitalWrite(displayA, HIGH); //Seguencia do numero 0
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
}
if(val<=-1){ //se valor for menor ou igual que -1
digitalWrite(displayA, HIGH); //Seguencia do numero 1
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
}
if(val<=-2){
digitalWrite(displayA, LOW); //Seguencia do numero 2
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, HIGH);
}
if(val<=-3){
digitalWrite(displayA, LOW); //Seguencia do numero 3
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG,LOW);
}
if(decButton == HIGH)
{
val++;
}
Serial.println(val); //Printar valores do serial crlt+shift+M
delay(100);
analogWrite(motorPin,val); //Escrita do valor analogico para o motor
}
Vídeo:
Comentário:
Ao fazer o upload do programa para o arduino você poderá navegar pelos pushbottons para acelerar e desacelerar o motor cc, o display de 7 segmentos comporta-se como um simples velocímetro.
Agradeço a atenção.
Nenhum comentário:
Postar um comentário