Arduino 3, Servo s časovačem

Všude jsem hledal program na ovládání serva. Ano všude jsem našel, ale pokud chcete do toho časovač a nebo rychlost, už je toho mnohem méně a co tahle všechny funkce najednou, tak to jsem už nenašel :D

Dneska si ukážeme jak rozpohybovat servo. Naučit ho kam má chodit, jak rychle a kdy. Servo = modelářské servo na 5V, nijak upravené. PS: toto zapojení nepotřebuje odrušení, jelikož v pauze (delay) nekmitá!

Nastavení:
X - z pozice přesuň
X - do pozice přesuň
X - rychlost (1 nejpomalejší)
Modrý text lze zkopírovat pod sebe podle počtu cyklů za sebou.

Zapojení:


PIN 13 - servo řídící vodič



Použití: Používám jej jako pohyb postavičky sekáče s kosou, tedy 10 krát mám pohyb serva a pak náhodná pauza. Další použítí, je třeba pohyb bagru, kohouta a nevím co vás ještě napadne na kolejišti rozhýbat.

Video: Arduino ovládá servo, které hýbe s postavičkou sekáče s kosou.

Program:
#include <Servo.h>        
Servo servo;
int pos = 0;
int value = 0;

void setup() {  
  servo.attach(13);                                // nastavení řidícího signálu serva na pin 13
  Serial.begin(9600);
}
void loop() 
  servo.attach(13);                                // pripoji servo k pinu

  for (pos = 0; pos <= 80; pos +=5){     // hýbne servem z pozice 0 do 80 s danou rychlostí
  servo.write(pos);   
  value = servo.read();
  Serial.println(value);
  delay(20);            
}
  
  for (pos = 80; pos >= 0; pos -=3){      // hýbne servem z pozice 80 do 0 s danou rychlostí
  servo.write(pos);  
  value = servo.read();
  Serial.println(value);
  delay(20);            
}

  servo.detach();                                  // vypne servo od pinu, protikmit funkce
  delay(random(10000,32000));          // cekej a nahodne spust (cekej od 10000 do 32000 nahodne) maximum - 32000 a minimum 1

}

/// sekce for (pos... je potřeba duplikovat pro případ sekáče minimálně tolíkrát, kolikrát má seknout. Defaultní program je jen s jedním seknutím nápřah/sek.