Работа над ошибками.
- Войдите на сайт для отправки комментариев
Ср, 15/01/2014 - 14:10
Прошу посмотреть скетч и сделать конструктивные замечания.
//передатчик #include <SPI.h> #include <Ethernet.h> //на будущее #include "RF24.h" // Подключаем скачанную библиотеку RF24. для работы с радио модулем NRF24L01+ //Контакты от радио модуля NRF24L01 подключаем к pins -> Arduino //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 8//CE -> 7 // Set up nRF24L01 radio on SPI bus plus pins 7 & 8 RF24 radio(7, 8); const uint64_t pipes[2] = {0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; //адрес канала, для передачи радио сигнала. char s_bufer[6], d_bufer[6]; String r_bufer, a1_bufer, a2_bufer; void setup(){ Serial.begin(9600); radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes [0]); // Открываем радио канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир } void loop() { if (Serial.available() > 0) { //Если с Serial пришла команда for (int i=0; i<6; i++) { //записываем в переменную типа char s_bufer[i] = Serial.read ();//полученные значения r_bufer = r_bufer+s_bufer[i];//монтируем строку String a2_bufer.substring (0, 3); //Выделяем имя приемника для проверки } radio.write(&r_bufer, 32); //передаем строку String по радиоканалу Serial.println(r_bufer); //печатаем, то что передали (AA1-имя приемника, x-разделитель, 1-2 символа команда) } if (radio.available()) { //Ждем ответ. Если в эфире что то есть radio.read(&d_bufer, 32); //Считываем полученое в буфер Serial.println(d_bufer); //Выводим буфер в Serial a1_bufer.substring (0,3); // Выделяем имя отправителя Serial.println(a1_bufer); //Выводим имя отправителя в Serial if (a1_bufer == a2_bufer) { //Если отправленное имя совпадает с полученным int val=a1_bufer.toInt(); //Переводим имя отправителя из массива в INT Serial.println ("HEX: "); // Выводим имя для проверки Serial.print (val, HEX); // в 16-ти ричном Serial.print (" DEC: "); // и Serial.print (val, DEC); // десятичном коде switch (val, DEC) { //в зависимости от имени передавшего case 2721: //AA1=2721 // выполняем действия a1_bufer.substring (4,6); // выделяем команду и полученного буфера int val2=a1_bufer.toInt(); // Переводим результат в INT Serial.println (val2); //печатаем результат break; }//конец выполнения действий }//конец сравнения имен }//окончания ожидания эфира }//конец void loop //конец программы
Максимально все закоментировал.
Работает?
У меня не работает, ничего не принемает и не передаёт.
Может радио модуль нужен?
:)
Тоже интересно работает ли ? :)
Перед radio.write необходимо выполнить radio.stopListening(); ,после - radio.startListening();
- это переключение на передачу проще говоря
И кстати каналов всего 125,а не 127 ...
Пример тоже собираю для ehternetа ,уже готово вывод данных через веб данных всех клиентов в эфире
это что такое? компилируется?
это что такое? компилируется?
компелируется, но работу в деле ешще не проверял
это что такое? компилируется?
компелируется, но работу в деле ешще не проверял
компелятор тебе неправильный код выдаст. тут получается операция перечисления, значением будет числовое значение DEC, а не то, что ты думаешь.
это что такое? компилируется?
компелируется, но работу в деле ешще не проверял
компелятор тебе неправильный код выдаст. тут получается операция перечисления, значением будет числовое значение DEC, а не то, что ты думаешь.
в переменную int val, из стринга, берется значение AA1(HEX), и переводится из HEX в DEC. Разве нет?
Разве нет?