Официальный сайт компании Arduino по адресу arduino.cc
Сервоконтроллер на Ардуино Нано
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 01/02/2015 - 10:51
Решил сделать сервоконтроллер на Ардуино.
Имеем:
1. Ардуино Нано.
2. Четыре серводвигателя SG90.
3. Две лапки из поликапролактона.
Отработаны два типа движения: лапки гребут одновременно и шагают попеременно.
Фото:
Скетч:
int servo_1 = 2; int servo_2 = 3; int servo_3 = 4; int servo_4 = 5; long pastTime = 0; int point_1 = 1550; int point_2 = 1500; int point_3 = 1500; int point_4 = 1550; int delta_1 = 200; int delta_2 = 200; int delta_3 = 200; int delta_4 = 200; void setup() { Serial.begin(9600); pinMode(servo_1, OUTPUT); pinMode(servo_2, OUTPUT); pinMode(servo_3, OUTPUT); pinMode(servo_4, OUTPUT); } void loop() { /* //гребут одновременно writeToServo(point_1 - delta_1, point_2, point_3 + delta_3, point_4); delay(50); writeToServo(point_1, point_2 - delta_2, point_3, point_4 + delta_4); delay(50); writeToServo(point_1 + delta_1, point_2, point_3 - delta_3, point_4); delay(50); */ //шагают попеременно writeToServo(point_1 - delta_1, point_2, point_3 - delta_3, point_4); delay(50); writeToServo(point_1, point_2 - delta_2, point_3, point_4); delay(50); writeToServo(point_1 + delta_1, point_2, point_3 + delta_3, point_4); delay(50); writeToServo(point_1, point_2, point_3, point_4 + delta_4); delay(50); } void writeToServo(int pos1, int pos2, int pos3, int pos4) { for(int i=0; i<10; i++) { pastTime = micros(); digitalWrite(servo_1, HIGH); delayMicroseconds(pos1); digitalWrite(servo_1, LOW); digitalWrite(servo_2, HIGH); delayMicroseconds(pos2); digitalWrite(servo_2, LOW); digitalWrite(servo_3, HIGH); delayMicroseconds(pos3); digitalWrite(servo_3, LOW); digitalWrite(servo_4, HIGH); delayMicroseconds(pos4); digitalWrite(servo_4, LOW); delayMicroseconds(10000); delayMicroseconds(3600 - (micros() - pastTime)); } }
Видео: