Есть две ардунки с nrf 24 . Один модуль на пульте с джойстиком , второй стоит с L298N. Проблема в том, что мотор не реагирует на джойстик. Помогите , пожалуйста разобраться... Код (C++): TX #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #define JOY1 A0 #define JOY2 A1 RF24 radio(9, 10); byte address[x][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб byte transmit_data[3]; byte latest_data[3]; boolean flag; void setup() { Serial.begin(9600); radio.begin(); radio.setAutoAck(1); radio.setRetries(0, 15); radio.enableAckPayload(); radio.setPayloadSize(32); radio.openWritingPipe(address[0]); radio.setChannel(0x60); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.powerUp(); radio.stopListening(); } void loop() { Serial.println(analogRead(JOY2)); transmit_data[0] = map(analogRead(JOY1), 0, 1023, 0, 180); transmit_data[1]= map(analogRead(JOY2),0,1023,0,255); for (int i = 0; i < 3; i++) { if (transmit_data != latest_data) { flag = 1; latest_data = transmit_data; } } if (flag == 1) { radio.powerUp(); radio.write(&transmit_data, sizeof(transmit_data)); flag = 0; radio.powerDown(); } } RX #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #include <Servo.h> #define IN1 6 #define IN2 7 #define ENA 8 RF24 radio(9, 10); byte recieved_data[3]; int pwm; int motor; Servo myservo; byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; void setup() { Serial.begin(9600); myservo.attach(2); motor = recieved_data[1]; pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); radio.begin(); radio.setAutoAck(1); radio.setRetries(0, 15); radio.enableAckPayload(); radio.setPayloadSize(32); radio.openReadingPipe(1, address[0]); radio.setChannel(0x60); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.powerUp(); radio.startListening(); } void loop() { Serial.println(recieved_data[1]); byte pipeNo; while ( radio.available(&pipeNo)) { radio.read( &recieved_data, sizeof(recieved_data) ); myservo.write(recieved_data[0]); valX = recieved_data[1]; if(valX > 126 && valX < 130){ digitalWrite(IN1, 0); digitalWrite(IN2, 0); analogWrite(ENA, 0 );} if(valX > 130) { valX = map(valX, 130, 255, 0, 255) digitalWrite(IN1, 1); digitalWrite(IN2, 0); analogWrite(ENA, valX );} if(valX < 126) { valX = map(valX, 126, 0, 0, 255); digitalWrite(IN1, 0); digitalWrite(IN2, 1); analogWrite(ENA, valX ); }}} [/code]
Просто такие же примеры смотрю у всех вместо Код (C++): if(valX > 126 && valX < 130){ digitalWrite(IN1, 0); digitalWrite(IN2, 0); analogWrite(ENA, 0 );} if(valX > 130) { valX = map(valX, 130, 255, 0, 255) digitalWrite(IN1, 1); digitalWrite(IN2, 0); analogWrite(ENA, valX );} if(valX < 126) { valX = map(valX, 126, 0, 0, 255); digitalWrite(IN1, 0); digitalWrite(IN2, 1); analogWrite(ENA, valX ); Код (C++): вот так: if(valX > 500 && valX < 530){ digitalWrite(IN1, 0); digitalWrite(IN2, 0); analogWrite(ENA, 0 );} if(valX > 530) { valX = map(valX, 530, 1023, 0, 255) digitalWrite(IN1, 1); digitalWrite(IN2, 0); analogWrite(ENA, valX );} if(valX < 500) { valX = map(valX, 500, 0, 0, 255); digitalWrite(IN1, 0); digitalWrite(IN2, 1); analogWrite(ENA, valX );
arduino123 - вы сменили ник - думаете я вас не узнаю? Но мне не жалко - я готов и третий раз подсказать. в чем у вас проблема. Ответ тот же самый. что и месяц назад - вы переменную motor один раз приравняли первому элементу массива recieved_data - думаете, она у вас теперь при приеме данных с джойстика сама будет обновляться?
2 недели назад я уже отвечал на этот вопрос на форуме ардуино.ру http://arduino.ru/forum/programmirovanie/pomogite-razobratsya-11 Тогда же и на форуме Гайвера (приводить ссылку не буду, лень) А до этого вы задавали этот же вопрос в марте, не надоело? Если вам не дается программирование - найдите уже какого-нить студента, дайте ему 500р и пусть допишет вам этот код