#include <Servo.h>
const int SERVO=3;
Servo myservo; // Objet servo
void setup(){
myservo.attach(SERVO); // Définit la broche du servo-moteur
}
void loop(){
for(pos=0;pos<=180;pos += 1){
myservo.write(pos); // Impose la position (en degrés) au servo
delay(15);
}
for(pos=180;pos>=0;pos -= 1){
myservo.write(pos);
delay(15);
}
}
#include <avr/io.h>
#include <util/delay.h>
void servos_init(void){
DDRD |= 0x08; // La broche 3 du port D est controlée par le minuteur 2
DDRB |= 0x08; // La broche 3 du port B est controlée par le minuteur 2
TCCR2A=(1<<COM2A1)|(1<<COM2B1); // COM2A et COM2B à 10 pour signaux normaux
TCCR2A |= (1<<WGM21) | (1<<WGM20); // WGM2 à 011 pour mode "fast PWM"
TCCR2B = (1<<CS21) | (1<<CS22); // CS2 à 110 pour un pré-diviseur de 256
// Une unité de OCR2A et OCR2B représente donc 256/16000000*1000*1000=16 us
// Pour un plateau de 1ms il faut alors 62 unités
// Pour un plateau de 2ms il faut alors 125 unités
}
int main(void){
int a;
for(a=0;a<180;a++){ OCR2A=62+a*63/180; _delay_ms(10); }
for(a=180;a>0;a--){ OCR2A=62+a*63/180; _delay_ms(10); }
}
const int STANDBY=6;
const int PWMA=3;
const int AIN1=5;
const int AIN2=4;
const int PWMB=11;
const int BIN1=7;
const int BIN2=8;
const int broches[]={STANDBY,PWMA,AIN1,AIN2,PWMB,BIN1,BIN2,-1};
void setup(void){
int i=0; while(broches[i]>0) pinMode(broches[i++],OUTPUT);
digitalWrite(STANDBY,HIGH); // Activation du contrôleur
digitalWrite(AIN1,HIGH); // Les moteurs dans le même sens
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,HIGH);
digitalWrite(BIN2,LOW);
analogWrite(PWMA,128); // Vitesse modérée
analogWrite(PWMB,128);
}
void loop(void){ }
const int DIR=2;
const int STEP=3;
const int CYCLE=200;
void setup(void){
pinMode(DIR,OUTPUT);
pinMode(STEP,OUTPUT);
}
void loop(void){
digitalWrite(DIR,HIGH);
for(int pas=0;pas<CYCLE;pas++){
digitalWrite(STEP,HIGH);
delayMicroseconds(2000);
digitalWrite(STEP,LOW);
delayMicroseconds(2000);
}
delay(1000);
}