Не работает digitalWrite(13, HIGH); совместно с Ethernet.begin(mac,ip)

wojaovlad
Offline
Зарегистрирован: 20.02.2015

Есть скетч, он соединяется с сервером, получает инфу и в зависимости от полученной инфы включает либо выключает свет, либо включает по датчику движения. Но почему-то не работает  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); 
}

Помогите пожалуйста.

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Ну наверное потому что 13 это SCK... используйте другой вывод для своих нужд.

LP
Offline
Зарегистрирован: 14.05.2016

Здравствуйте!

Похожая проблема. Также не работает 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); 


   
};

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Предвижу следующих два вопроса:

Третий: Похожая проблема. Также не работает digitalWrite(11, HIGH/LOW);

Четвёртый: Похожая проблема. Также не работает digitalWrite(10, HIGH/LOW);

Совет:
Отдайте SPI-ю его "родные" пины 10, 11, 12, 13 и не трожьте их ( если вы не на Меге 128-256)
http://arduino.ru/Reference/Library/SPI

 

LP
Offline
Зарегистрирован: 14.05.2016

Спасибо!

inspiritus
Offline
Зарегистрирован: 17.12.2012

И не забудьте, что есть еще чипселекты по одному на эзернет и sd. , указанные программно. SD живет по умолчанию на 4-м пине, зернет не помню навскидку. Их тоже не следует беспокоить.