Mirf и Ethernet.h
- Войдите на сайт для отправки комментариев
Чт, 08/05/2014 - 18:37
К ардуино уно подключен ethernet shield и nrf24l01(cs пины разные). Пытаюсь сделать так:
1. Пользователь видет html страницу отдаваемую arduino + ethernet shield.
2. Вводит текст в поле и отправляет.
3. Arduino + ethernet shield принимают и отправляют его по nrf24l01 на другую ардуину.
Для этого ипсрользую библиотеку Mirf и Ethernet.h. Объеденил 2 примера Mirf и Ethernet.h не могу скомпилировать.
Вот код:
#include <SPI.h> #include <Ethernet.h> #include <Mirf.h> #include <nRF24L01.h> #include <MirfHardwareSpiDriver.h> #define MAX_BUFF 32 //Буфер приёма-передачи byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес byte ip[] = { 192, 168, 0, 2 }; // IP адрес (В броузере вводим 192.168.0.2) EthernetServer server(80); char buff2[MAX_BUFF]; void setup() { Ethernet.begin(mac, ip); server.begin(); Serial.begin(9600); Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.setRADDR((byte *)"app1"); Mirf.payload = MAX_BUFF; Mirf.channel = 10; Mirf.config(); Serial.println("Start.."); } void loop() { EthernetClient client = server.available(); if (client) { // Проверяем подключен ли клиент к серверу while (client.connected()) { // Проверяем идет ли запрос к серверу int dataCount = client.available(); if (dataCount > 0) { // чтобы не мучатся пока просто берем 4 символа из ответа buff2[0] = client.read(); buff2[1] = client.read(); buff2[2] = client.read(); buff2[3] = client.read(); Mirf.setTADDR((byte *)"app2"); //Адрес! Serial.print(">"); Mirf.send((uint8_t *)buff2); while(Mirf.isSending()){ } } // Страница ввода текста client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("<html>"); client.println("<head>"); client.println("<title>SEND TEXT</title>"); client.println("</head>"); client.println("<body>"); client.println("<h3>SEND TEXT FOR nRF24L01</h3>"); client.println("<input name='text'>"); client.println("<input type='submit' value='Submit'>"); client.println("</form>"); client.println("</body>"); client.println("</html>"); client.stop(); } } }
Вот что какие ошибки выдает компилятор:
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:82: error: expected constructor, destructor, or type conversion before '<' token
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:93: error: expected constructor, destructor, or type conversion before ';' token
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp: In function 'void setup()':
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:95: error: redefinition of 'void setup()'
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:19: error: 'void setup()' previously defined here
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp: In function 'void loop()':
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:113: error: redefinition of 'void loop()'
C:\Users\dd\Documents\Arduino_Build\3_ethernet\3_ethernet.ino.cpp:36: error: 'void loop()' previously defined here
[Stino - Error 1]
ну правильно пишет, потому что сюда вы не все вставили что у вас в окне редактора.
я весь код из редактора сюда вставил
просто тот код что вы вставили ошибок не содержит...
Странно в arduino IDE все компилируется. А через плагин в sublime text нет.
Ну теперь вопрос в другом как допилить этот скетч чтоб работал ethernet shield и nrf24l01. В таком варианте как сейчас страница то возвращается то нет, данные то оптравляются то нет. Вообще модуль ведет себе странно. Подскажите как доделать программу чтобы они нормально поочередно работали.
Неужели никто не знает?
Попробуйте сборку Dr. Monk'а для либы Nuelectronics, плюс сеть не на W5100 а на ENC28J60.
Обёртка: http://dl.dropbox.com/u/3993179/ETHER_28J60.zip
Библа: http://www.nuelectronics.com/download/projects/etherShield.zip
Сетевуха: http://item.taobao.com/item.htm?id=21579360796