Код из видео
леонардо на платформе
// леонардо на платформе #include <EasyTransfer.h> EasyTransfer ET; #define DIRA_PIN 12 // ноги L298 #define DIRB_PIN 13 #define PWMA_PIN 3 #define PWMB_PIN 11 struct RECEIVE_DATA_STRUCTURE{ boolean DIRA; boolean DIRB; uint8_t PWMA; uint8_t PWMB; }; RECEIVE_DATA_STRUCTURE data; void setup() { Serial1.begin(115200); // Serial для радиомодуля HC11 // аппаратный в леонардо pinMode(DIRA_PIN, OUTPUT); // конфигурируем выходы pinMode(DIRB_PIN, OUTPUT); analogWrite(PWMA_PIN, 0); // выключаем L298 analogWrite(PWMB_PIN, 0); ET.begin(details(data), &Serial1); // заводим EasyTransfer на Serial1 } void loop() { if (ET.receiveData()) { // если пришли данные от HC11 analogWrite(PWMA_PIN, data.PWMA); // сопостовляем их analogWrite(PWMB_PIN, data.PWMB); digitalWrite(DIRA_PIN, data.DIRA); digitalWrite(DIRB_PIN, data.DIRB); } }
леонардо в качестве пульта
// леонардо в качестве пульта #include <EasyTransfer.h> #define RA A0 // ноги для подключения резисторов #define RB A1 //create object EasyTransfer ET; struct SEND_DATA_STRUCTURE{ // эту структуру будем передавать boolean DIRA; // тут ноги шилда на L298 boolean DIRB; uint8_t PWMA; uint8_t PWMB; }; SEND_DATA_STRUCTURE data; void setup() { Serial1.begin(115200); // UART для HC11 ET.begin(details(data), &Serial1); } void loop() { int RAValue = analogRead(RA); // читаем аналоговые входы int RBValue = analogRead(RB); // разделяем валуе пополам, для движения вперед\назад if (RAValue > 512){ // если значение больше 512 data.DIRA = 0; // это вперед data.PWMA = map(RAValue+5, 0, 512, 0, 255); // мапим аналог, приводим значения для ШИМ, +5 это гистерезис } else { // тоже для назад data.DIRA = 1; data.PWMA = map(RAValue-5, 1023, 512, 0, 255); } if (RBValue > 512){ // тоже для второй гусиницы data.DIRB = 0; data.PWMB = map(RBValue+5, 0, 512, 0, 255); } else { data.DIRB = 1; data.PWMB = map(RBValue-5, 1023, 512, 0, 255); } ET.sendData(); // отпраляем значения }