#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); }