Не работает digitalWrite(13, HIGH); совместно с Ethernet.begin(mac,ip)
- Войдите на сайт для отправки комментариев
Пт, 20/02/2015 - 23:33
Есть скетч, он соединяется с сервером, получает инфу и в зависимости от полученной инфы включает либо выключает свет, либо включает по датчику движения. Но почему-то не работает digitalWrite(13, HIGH); причём в мониторе выводит, что включилось/выключилось. Методом частичной проверки кода выяснилось что помеха этому Ethernet.begin(mac,ip), так как если убрать его, то всё работает, реле щёлкает. Вот тут например реле не будет работать:
#include <SPI.h>
#include <Ethernet.h>
#include <string.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x91, 0x08 };
byte ip[] = { 192,168,1,56 };
void setup() {
Serial.begin(9600);
EthernetClient client;
Ethernet.begin(mac, ip);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
Serial.println("1");
delay(1000);
digitalWrite(13, LOW);
Serial.println("2");
delay(1000);
}
Но если мы закомментируем часть кода, то будет:
#include <SPI.h>
#include <Ethernet.h>
#include <string.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x91, 0x08 };
byte ip[] = { 192,168,1,56 };
void setup() {
Serial.begin(9600);
EthernetClient client;
// Ethernet.begin(mac, ip);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
Serial.println("1");
delay(1000);
digitalWrite(13, LOW);
Serial.println("2");
delay(1000);
}
Помогите пожалуйста.
Ну наверное потому что 13 это SCK... используйте другой вывод для своих нужд.
Здравствуйте!
Похожая проблема. Также не работает digitalWrite(12, HIGH/LOW);
скетч смс-ки получает, читает, находит нужное слово, заходит в условие - но реле не щелкает!
Если я пытаюсь пощелкать релющкой вне этого условия - все работает, а внутри никак
#include "SIM900.h" #include <SoftwareSerial.h> #include "sms.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display SMSGSM sms; char number[]="***********"; char message[180]; char pos; char *p; int led = 12; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); if (gsm.begin(2400)) Serial.println("\nstatus=READY"); else Serial.println("\nstatus=IDLE"); lcd.init(); // initialize the lcd lcd.backlight(); lcd.print("Hello"); }; void loop() { pos=sms.IsSMSPresent(SMS_UNREAD); Serial.println((int)pos); if((int)pos>0&&(int)pos<=20){ Serial.print("NEW MESSAGE, POS="); Serial.println((int)pos); message[0]='\0'; sms.GetSMS((int)pos,number,message,180); //get sms lcd.clear(); lcd.print(message); //печатает смс на лсд p=strstr(message,"A"); //если A содержится в смс if(p){ //то Serial.println("LED ON"); digitalWrite(led, HIGH); lcd.setCursor(0, 1); lcd.print("ONON"); delay(5000); Serial.println("LED OFF"); digitalWrite(led, LOW); lcd.setCursor(0, 1); lcd.print("offoff"); delay(5000); } sms.DeleteSMS((int)pos); } delay(5000); };Предвижу следующих два вопроса:
Третий: Похожая проблема. Также не работает digitalWrite(11, HIGH/LOW);
Четвёртый: Похожая проблема. Также не работает digitalWrite(10, HIGH/LOW);
Совет:
Отдайте SPI-ю его "родные" пины 10, 11, 12, 13 и не трожьте их ( если вы не на Меге 128-256)
http://arduino.ru/Reference/Library/SPI
Спасибо!
И не забудьте, что есть еще чипселекты по одному на эзернет и sd. , указанные программно. SD живет по умолчанию на 4-м пине, зернет не помню навскидку. Их тоже не следует беспокоить.