Доброго дня! Я сам занимаюсь радиоуправляемыми моделями- копиями. Мне необходимо сделать систему уборки и выпуска шасси. Присмотрел для этого дела Uno и motor shield. Попробовал скрестить свой приёмник и ардуинку и у меня возник затык. Из темы про бульдозер попробовал скетч на управление, но мотор не крутится, из первоисточника взял код на просмотр через монитор порта, значения меняются, но больше ни как. Что мне нужно что бы получилось : Есть два двигателя с винтовым валом по которому двигается гайка и двигает исполнительный механизм, на крайних положениях стоят кнопки-концевики. Нужно что бы при включении мотор начал крутится до включения концевика и стоп , ждём следующей команды, есть команда двигатель начал крутится назад до следующего концевика. два двигателя управляются с одной команды, но останов по своему концевику на каждый двигатель, у команды только 2 значения или низкое или высокое, середины нет(тумблер на пульте, но сигнал шим (мин 1093-1096 : мах 1896-1901)) На фотах как у меня всё собрано в кучку, приемник на 5 канале.
пока добился работы по отдельности вот такого кода: Код (Text): /* RC PulseIn Joystick By: Nick Poole SparkFun Electronics Date: 5 License: CC-BY SA 3.0 - Creative commons share-alike 3.0 use this code however you'd like, just keep this license and attribute. Let me know if you make hugely, awesome, great changes. */ int ch1; // Here's where we'll keep our channel values void setup() { pinMode(5, INPUT); // Set our input pins as such Serial.begin(9600); // Pour a bowl of Serial } void loop() { ch1 = pulseIn(5, HIGH, 25000); // Read the pulse width of if(ch1>1100){Serial.println(" Engaged");} if(ch1<1800){Serial.println(" Disengaged");} Serial.println(); //make some room } этот код выдаёт на терминале нужные значения при переключении тумблера на пульте. а вот этот крутит моторы по программе, Код (Text): #include <AFMotor.h> AF_DCMotor right_motor(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm AF_DCMotor left_motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm void setup() { Serial.begin(9600); // set up Serial library at 9600 bps right_motor.setSpeed(255); // set the speed to 200/255 left_motor.setSpeed(255); // set the speed to 200/255 } void loop() { right_motor.run(FORWARD); // turn it on going forward left_motor.run(FORWARD); // turn it on going forward right_motor.run(BACKWARD); // the other way left_motor.run(BACKWARD); // the other way right_motor.run(RELEASE); // stopped left_motor.run(RELEASE); // stopped } теперь надо как то это всё скрутить вместе, что бы при "if(ch1>1100){Serial.println(" Engaged");}" мотор выполнял "right_motor.run(FORWARD); // turn it on going forward left_motor.run(FORWARD); // turn it on going forward " а при"if(ch1<1800){Serial.println(" Disengaged");}" вот эту строку " right_motor.run(BACKWARD); // the other way left_motor.run(BACKWARD); // the other way " Может кто подскажет в каком направлении двигаться? С увю Александр
попробовал соединить , вот что получилось: Код (Text): #include <AFMotor.h> int ch1; AF_DCMotor right_motor(1, MOTOR12_64KHZ); AF_DCMotor left_motor(2, MOTOR12_64KHZ); void setup() { pinMode(5, INPUT); right_motor.setSpeed(255); left_motor.setSpeed(255); } void loop() { ch1 = pulseIn(5, HIGH, 25000); if(ch1>1100){ right_motor.run(FORWARD); left_motor.run(FORWARD); } if(ch1<1800){ } right_motor.run(BACKWARD); left_motor.run(BACKWARD); } но моторы на команды передатчика не реагируют....подскажите в чём мой косяк?