Не називайте loop
з циклу
. Ви швидко вичерпаєте оперативну пам'ять, а ескіз зірветься:
void loop(){
int recipe;
//Serial.print("Enter recipe number: ");
while(Serial.available()==0){ //Waits for data from serial port
}
while(Serial.available() > 0){
...
}
else
loop();
}
Для контактів, які повинні бути високими, я пропоную підтягувати резистори:
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT); //for start of program operation
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
Коли Arduino потужності вгору він входить в завантажувач на секунду або близько того. Ці контакти не будуть встановлені ще високо. Підтягуючий резистор буде переконатися, що вони високі до тих пір, поки ви хочете їздити на них низьким.
Якщо ви говорите, що машина вмикається, коли ви від'єднуєте живлення від Arduino, це все ще є вагомою причиною для використання підтягуючих резисторів, щоб переконатися, що він не працює, поки не буде наказано робити тому.
Де я підключу резистори і як?
Зазвичай підтягуючі резистори будуть близько 10k, і з'єднуються від штифта до + 5V. Звичайно, якщо Arduino не живиться, то потрібно ще одне джерело + 5V.
Будь ласка, поясніть, чи не викликати від циклу до петлі
Видалити ці два рядки:
else
loop();
Коли loop
виходить, це негайно повторно викликається. Вам не потрібно робити це так, адже це погана ідея.