Dia 5:
Então e se quisermos controlar dispositivos como os servos com o nosso Arduino?! este precisam dos conhecidos PWM, são ondas quadradas que variam entre GRD e VCC, e o que varia é o tempo de on e off do sinal.
Fica uma imagem explicativa do PWM, e da correspondência de valores para o analogWrite do Arduino:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.lusorobotica.com%2Fimg%2Farduino%2Fpwm.gif&hash=115d21dbac6aa2adc3202e6e97c311d1cc036979)
Fonte da image: http://www.arduino.cc (http://www.arduino.cc)
Para fazermos o output de um PWM, dispomos dos pins 3, 5, 6, 9, 10 e 11, mas podemos recorrer à biblioteca Servo.h que se encontra no site http://www.arduino.cc (http://www.arduino.cc), e assim controlar servos com PWM por qualquer dos pins do Arduino.
Como para o meu robô não preciso de usar mais de 6 servos neste momento, vou fazer um simples analogWrite(pinNumb, 0-255) como no código abaixo, para controlar o PWM.
Se ligarmos este sinal a uma simples ponte H para controlar motores DC, o que fazemos é activar e desactivar os transistors, produzindo assim com o máximo de torque uma velocidade mais baixa do que se utilizasse-mos um valor analógico entre GRD e VCC, para alem de que evita o aquecimento dos transistors, visto que estes estão sempre ou ao corte, ou saturado.
No vídeo abaixo faço um exemplo disso mesmo, que pode ser facilmente acompanhado pelo código em anexo.
Coloquei um bocado de fita branca na roda para se poder ver as diferenças de velocidade.
http://www.revver.com/video/900986 (http://www.revver.com/video/900986)
Gerar PWM com Arduino (http://lusorobotica.com/index.php/topic,499.msg4418.html#msg4418)