Весь код покажите. Только сначала в Arduino IDE нажмите Ctrl+T, а при вставке на форум используйте тэг CODE - это 19-я по счету кнопка в редакторе сообщений.
вроде понел в чем проблема но пока не проверял у меня дела (ДЗ) я вить в 5 классе.p.s взрослым везет пришол с работы и валяйся на диване .
новая проблема голод перестал быть стабилен вот код : Код (Text): #include <Ultrasonic.h> #include <EEPROM.h> int a,d,s,l,p,m,c,svet1,lop,o = 0; int w = 1000; int tok,lok = 0; int f,g,j,k,h = 0; int straxser = 0; int nastroenieser = 0; int golod = 0; int lol1 = 2; int lol2 = 3; int yol = 0; int lop1 = 25; int lop2 = 0; int lop3 = 0; Ultrasonic rcs(12,13); boolean nm,nm1,nm2 = 0; boolean olk = false; int look = 0; int ingredienti_golod[99]; // [0] бараний бульен // [1] рыба // [2] овоши // [3] потроха // [4] баранина // [5] бычый хвост и голяшек // [6] соевая паста // [7] говядина // [8] рис // [9] грецкий орех // [10] бараньи ноги // [11] лапша // [12] креветки // [13] курица // [14] картошка // [15] лук // [16] марковь // [17] соль // [18] лаврушка // [19] укроп // [20] вода :-) int soups[99]; // [0] Бобчербе — одна из разновидностей среднеазиатских супов, доведенный до легкого брожения суп на бараньем бульоне. // [1] Буйабес — французский рыбный суп. Подобные же по технологии супы существуют и в Италии, Ирландии, Хорватии // [2] Демикат — словацкий овощной суп // [3] Ис миинэ — якутский суп из потрохов. Надо отметить, что в приполярную кухню супы вошли совсем недавно. // [4] Кололик — армянский суп из баранины // [5] Консоме — французский суп из бычьих хвостов и голяшек) // [6] Киду — африканский суп из рыбы киду // [7] Кулеш — украинский суп из сала и крупы // [8] Мисо — японский суп из соевой пасты // [9] Окстейл суп — английский суп из бычьих хвостов // [10] Борщ — сложный овощной суп // [11] Шурпа — густой суп у тюркских народов // [12] Харчо — грузинский суп из говядины с рисом и грецкими орехами // [13] Хаш — азиатский суп из говяжих и/или бараньих ног // [14] Хого — китайский суп из овощей и/или мяса // [15] Чили кон карне — мексиканский суп // [16] Фо — вьетнамский суп из говядины с лапшой // [17] Том Ям/Кунг — тайский кисло-острый суп с креветками, курицей, рыбой или другими морепродуктами. // [18] куриный суп int dessert[99]; int second[99]; int ingredienti_soup[99]; int ingredienti_vkys[99]; void opredelenie_ingredelent() { ingredienti_golod[11] = 200; ingredienti_golod[13] = 5000; ingredienti_golod[14] = 100; ingredienti_golod[15] = 30; ingredienti_golod[16] = 100; ingredienti_golod[18] = 1; ingredienti_golod[19] = 1; } void opredelenie_supov() { if(golod < 3000) { soups[18] = ingredienti_golod[13] / 100 * 30; + ingredienti_golod[14] / 100 * 20 + ingredienti_golod[18] + ingredienti_golod[19] + ingredienti_golod[15] + ingredienti_golod[16] + ingredienti_golod[11] + ingredienti_golod[20]; } } void nastroenie() { if(o == 2) { nastroenieser = nastroenieser + 1000; digitalWrite(11,HIGH); delay(100); digitalWrite(11,LOW); o = 0; } if(o == 3) { nastroenieser = nastroenieser - 100; digitalWrite(10,HIGH); delay(100); digitalWrite(10,LOW); o = 0; } if(o == 4 && golod < 3000) { golod = golod + soups[18]; } if(o == 5) { nastroenieser = 0; straxser = 0; golod = 0; } } void svet () { svet1 = analogRead(A6); } void opt () { lok = millis(); if(lok > tok) { if(golod > 0) { golod = golod - 10; } if(svet1 > 600) { svet1 = svet1 / 25; straxser = straxser + svet1; lop2 = svet1 / 10; nastroenieser = nastroenieser - lop2; } tok = tok + 1000; if(straxser > 0) { straxser = straxser - 100; } } } void scan() { l = rcs.Ranging(CM); delay(1); f = rcs.Ranging(CM); s = f - l; g = s / 1; h = g * 100; if( h < 5000) h = 0; if(h > 4000) { c = h / 25; straxser = straxser + c; lop3 = c / 10; nastroenieser = nastroenieser - lop3; digitalWrite(10,HIGH); delay(100); digitalWrite(10,LOW); delay(25); } } void strax () { } void vivod () { Serial.available(); o = Serial.read () - '0'; if(o == 1) { Serial.println("mur,mur,mur =)"); Serial.print("Strax = "); Serial.println(straxser); Serial.print("nastroenie = "); Serial.println(nastroenieser); Serial.print("golod = "); Serial.println(golod); o = 0; } } void ommorok() { if(straxser > 10000) { digitalWrite(10,HIGH); delay(10000); digitalWrite(10,LOW); straxser = 0; } } void avtonom() { nm = digitalRead(49); nm1 = digitalRead(50); nm2 = digitalRead(30); if(nm == 1){ nastroenieser = nastroenieser + 1000; digitalWrite(11,HIGH); delay(100); digitalWrite(11,LOW); o = 0; delay(1000); } if(nm1 == 1){ nastroenieser = nastroenieser - 100; digitalWrite(10,HIGH); delay(100); digitalWrite(10,LOW); o = 0; delay(1000); } if(nm2 == 1) { golod = golod + soups[18]; nm = 0; delay(1000); } } void setup() { Serial.begin(9600); pinMode(11,OUTPUT); pinMode(10,OUTPUT); pinMode(49,INPUT); pinMode(30,INPUT); pinMode(50,INPUT); } void EEPROMWriteInt(int p_address, int p_value) { byte lowByte = ((p_value >> 0) & 0xFF); byte highByte = ((p_value >> 8) & 0xFF); EEPROM.write(p_address, lowByte); EEPROM.write(p_address + 1, highByte); } //This function will read a 2 byte integer from the eeprom at the specified address and address + 1 unsigned int EEPROMReadInt(int p_address) { byte lowByte = EEPROM.read(p_address); byte highByte = EEPROM.read(p_address + 1); return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00); } void pam() { golod = golod / 20; nastroenieser = nastroenieser / 20; straxser = straxser / 20; EEPROMWriteInt(0,golod); EEPROMWriteInt(1,nastroenieser); EEPROMWriteInt(2,straxser); } void lot() { golod = EEPROMReadInt(0); nastroenieser = EEPROMReadInt(1); straxser = EEPROMReadInt(2); golod = golod * 20; nastroenieser = nastroenieser * 20; straxser = straxser * 20; } void loop() { lot(); nastroenie(); vivod(); scan(); svet(); ommorok(); avtonom(); opredelenie_ingredelent(); opredelenie_supov(); opt(); pam(); }
отказ функции opt : Код (Text): void opt () { lok = millis(); if(lok == tok) { if(golod > 0) { golod = golod - 10; } if(straxser > 0) { straxser = straxser - 100; } tok = tok + 1000; } lok = millis(); }
Код (Text): lok = millis(); if(lok == tok) ... Нужно >=, а не ==, иначе можно проскочить. Переменная golod может быть меньше нуля? Если нет, то вместо Код (Text): if(golod > 0) { golod = golod - 10; } следует написать Код (Text): if(golod >= 10) golod -= 10; В самом конце строчка lok = millis(); не делает ничего полезного, т.к. переменная lok далее больше нигде не используется.
Код (Text): void EEPROMWriteInt(int p_address, int p_value) { byte lowByte = ((p_value >> 0) & 0xFF); byte highByte = ((p_value >> 8) & 0xFF); EEPROM.write(p_address, lowByte); EEPROM.write(p_address + 1, highByte); } //This function will read a 2 byte integer from the eeprom at the specified address and address + 1 unsigned int EEPROMReadInt(int p_address) { byte lowByte = EEPROM.read(p_address); byte highByte = EEPROM.read(p_address + 1); return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00); }
Код (Text): void pam() { golod = golod / 10; straxser = straxser / 10; nastroenieser = nastroenieser / 10; EEPROMWriteInt(0,golod); EEPROMWriteInt(1,nastroenieser); EEPROMWriteInt(2,straxser); } void lot() { golod = EEPROMReadInt(0); nastroenieser = EEPROMReadInt(1); straxser = EEPROMReadInt(2); golod = golod * 10; straxser = straxser * 10; nastroenieser = nastroenieser * 10; }
проблема втом что он записывает значение а потом когда его спрашиваеш он выдает как будто мусорные значения низнаю это проблема в функции чтения или записи .
В Arduino IDE есть пример для работы с EEPROM, прогоните его, чтобы выяснить истинную причину неработоспособности. И когда пытаетесь что-то новое для себя добавить в программу, не поленитесь сперва сделать маленький скетч для проверки и отработки. Так и поймете все лучше, и какие-то особенности сможете узнать, "играя" с кодом.
уже есть продвижение при первом запуске все сохраняет все норм но вместо того чтобы у голода отнимать 10 отнимает 100 через некоторое время перестает работать millis() а так без сохранений работает
теперь стал работать с sd но проблеиа таже вот код Код (Text): void save () { golod = golod / 100; nastroenieser = nastroenieser / 100; straxser = straxser / 100; File save1 = SD.open("save1.txt", FILE_WRITE); save1.println(golod); save1.close(); File save2 = SD.open("save2.txt", FILE_WRITE); save2.println(nastroenieser); save2.close(); File save3 = SD.open("save3.txt", FILE_WRITE); save3.println(straxser); save3.close(); } void load () { File save1 = SD.open("save1.txt", FILE_READ); golod = save1.read(); save1.close(); File save2 = SD.open("save2.txt", FILE_READ); nastroenieser = save2.read(); save2.close(); File save3 = SD.open("save3.txt", FILE_READ); straxser = save3.read(); save3.close(); golod = golod * 100; nastroenieser = nastroenieser * 100; straxser = straxser * 100; } всепоказания изменяются