SERVO MOTOR
1 - Controle de servo motor, usando código, vejam abaixo o material do
potenciômetro e servo motor, vocês verão que é bem simples. Um exemplo do esquema de ligação do ServoMotor ao Arduino
Código para copiar e colar no arduino
#include <Servo.h> Servo servo; int value = 0; void setup(){ servo.attach(9); } void loop() { for(value = 0; value <= 180; value+=5) { servo.write(value); delay(30); } for(value = 180; value >=0; value-=5) { servo.write(value); delay(30); } }
2 - Esquema de ligação do ServoMotor + Potenciômetro ao Arduino
Esquema de ligação do ServoMotor + Potenciômetro ao Arduino com alimentação externa, devemos usar uma fonte de alimentação externa pois a corrente que
Código para copiar e colar no arduino
// Controle de motor de servo com potenciometro #include <Servo.h>
Servo servo; // cria um objeto do tipo servo para acessar os métodos int potpin = 0; // define o pino analógico 0 para ligar o potenciómetro int val; // variavel para armazenar o valor lido do pino analógico 0 void setup() {
servo.attach(9); // atribui o pino 9 do arduino para ser controlado pelo objeto }
void loop() {
val = analogRead(potpin); // lê o valor do potenciometro (valores entre 0 e 1023)
val = map(val, 0, 1023, 0, 180 ); //escalas usadas pelo servo (valores entre 0 e 180)
servo.write(val); // seta o servo de acordo com a posição (scala) lida acima por analogRead()
}
3 - Controlando as cores de um LED RGB com código simples.
Código para copiar e colar no arduino
int greenPin = 9; // Green LED, Conectado ao pino digital 9 int redPin = 10; // Red LED, Conectado ao pino digital 10 int bluePin = 11; // Blue LED, Conectado ao pino digital 11 void setup() {
pinMode(redPin, OUTPUT); // Configura pinos como Saída pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
analogWrite(redPin, 0); // Desliga LED vermelho analogWrite(greenPin, 0); // Desliga LED verde analogWrite(bluePin, 0); // Desliga LED azul } void loop () { // Branco analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); delay(3000); // Verde analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 0); delay(3000); // Cyan analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); delay(3000); // Vermelho analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 0); delay(3000); // Amarelo analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 0); delay(3000); // Azul analogWrite(redPin, 0); analogWrite(greenPin, 0); analogWrite(bluePin, 255); delay(3000);
// Lilas analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 255); delay(3000); }
4 - Fazendo efeito aleatório com LEDs RGB via código.
Um exemplo do esquema de ligação de 2 LEDs RGB ao Arduino
Código para copiar e colar no arduino
/*--- LED RGB FELLIPE COUTO 07/07/2012 ---*/ #define Red1 5 #define Red2 10 #define Green1 9 #define Green2 3 #define Blue1 6 #define Blue2 11
int RedOld = 0; int GreenOld = 0; int BlueOld = 0; int RedOld2 = 0; int GreenOld2 = 0; int BlueOld2 = 0; void setup(){ pinMode(Red1, OUTPUT); pinMode(Red2, OUTPUT); pinMode(Green1, OUTPUT); pinMode(Green2, OUTPUT); pinMode(Blue1, OUTPUT); pinMode(Blue2, OUTPUT);
randomSeed(analogRead(0)); //Para o random não repetir a sequencia. Pisca(); } void loop(){ Pisca(); SequenciaRapida(); SequenciaAleatoria(); } void SequenciaAleatoria(){ for (int i=0; i<15; i++){
CoresRGB(random(7) + 1, random(250) + 50); //fade = 50 a 299. delay(40000);
} }
void SequenciaRapida(){ for (int j=0; j<3; j++){ for (int i=1; i<=7; i++){ CoresRGB(i, 10); delay(2000); } } } void Pisca(){
for (int i=1; i<=30; i++){ CoresRGB(random(8), 0); delay(random(150)); }
}
void CoresRGB(int cor, int fade){ /*
0- APAGADO 1- VERMELHO 2- VERDE 3- AZUL
4- VERMELHO+AZUL 5- VERDE+AZUL
6- VERMELHO+VERDE
7- VERMELHO+VERDE+AZUL */
for (int i=0; i<=365; i++){ /* -- LED 1 -- */ switch(cor){ case 0: RedOld--; GreenOld--; BlueOld--; break; case 1: RedOld++; GreenOld--; BlueOld--; break; case 2: RedOld--; GreenOld++; BlueOld--; break; case 3: RedOld--; GreenOld--; BlueOld++; break; case 4: RedOld++; GreenOld--; BlueOld++; break; case 5: RedOld--; GreenOld++; BlueOld++; break; case 6: RedOld++; GreenOld++; BlueOld--; break; case 7: RedOld++;
GreenOld++; BlueOld++; break; } if (RedOld > 255){ RedOld = 255; } else if (RedOld < 0) { RedOld = 0; } if (GreenOld > 255){ GreenOld = 255; } else if (GreenOld < 0) { GreenOld = 0; } if (BlueOld > 255){ BlueOld = 255; } else if (BlueOld < 0) { BlueOld = 0; }
if (RedOld <= 255 && RedOld >= 0){ analogWrite(Red1, RedOld);
}
if (GreenOld <= 255 && GreenOld >= 0){ analogWrite(Green1, GreenOld);
}
if (BlueOld <= 255 && BlueOld >= 0){ analogWrite(Blue1, BlueOld); } /* -- LED 2 -- */ if (i >= 110){ switch(cor){ case 0: RedOld2--; GreenOld2--; BlueOld2--; break; case 1: RedOld2++; GreenOld2--; BlueOld2--; break; case 2: RedOld2--; GreenOld2++; BlueOld2--;
break; case 3: RedOld2--; GreenOld2--; BlueOld2++; break; case 4: RedOld2++; GreenOld2--; BlueOld2++; break; case 5: RedOld2--; GreenOld2++; BlueOld2++; break; case 6: RedOld2++; GreenOld2++; BlueOld2--; break; case 7: RedOld2++; GreenOld2++; BlueOld2++; break; } if (RedOld2 > 255){ RedOld2 = 255; } else if (RedOld2 < 0) { RedOld2 = 0; } if (GreenOld2 > 255){ GreenOld2 = 255; } else if (GreenOld2 < 0) { GreenOld2 = 0; } if (BlueOld2 > 255){ BlueOld2 = 255; } else if (BlueOld2 < 0) { BlueOld2 = 0; }
analogWrite(Red2, RedOld2); }
if (GreenOld2 <= 255 && GreenOld2 >= 0){ analogWrite(Green2, GreenOld2);
}
if (BlueOld2 <= 255 && BlueOld2 >= 0){ analogWrite(Blue2, BlueOld2); } } delay(fade); } }