Проблемы компиляции скетча arduino uno

Тема в разделе "Arduino & Shields", создана пользователем ALeska811, 3 фев 2020.

  1. ALeska811

    ALeska811 Нерд

    #include <EEPROM.h>
    int score;
    int value;
    void setup() {
    pinMode(2,INPUT_PULLUP);
    pinMode(3,OUTPUT);
    Serial.begin(9600);
    }

    void loop() {
    score = EEPROM.read(1);
    if(digitalRead(2)HIGH){score=5000;EEPROM.write(1,score);}
    if(score == 5000){digitalRead(3)HIGH;}
    Serial.println(score);
    }
    Вот скетч не компилируется.
    пишет
    \Documents\Arduino\sketch_jan12e\sketch_feb01a\sketch_feb03a\sketch_feb03a.ino:13:33: note: in expansion of macro 'HIGH'

    if(score == 5000){digitalRead(3)HIGH;}
     
  2. b707

    b707 Гуру

    а что такое
    digitalRead(3)HIGH ?
    Что это значит?

    Судя по всему, вы не то что не читали ни одну книжку по ардуино - вы наверно и не подозреваете, что такие есть.
    Начните с любого пособия для чайников
     
    Daniil и NikitOS нравится это.
  3. ALeska811

    ALeska811 Нерд

    Спасибо разобрался
     
  4. b707

    b707 Гуру

    Так быстро? - что-то не верится
    выкладывайте код - посмотрим.
    Только вставляйте код по правилам форума
     
  5. ALeska811

    ALeska811 Нерд

    Код (C++):
    #include <EEPROM.h>
    int score;
    int value;
    void setup() {
    pinMode(2,INPUT_PULLUP);
    pinMode(3,OUTPUT);
    pinMode(4,INPUT_PULLUP);
    Serial.begin(9600);
    }

    void loop() {
    if(!digitalRead(4)==HIGH){score = EEPROM.read(score);}
    if(!digitalRead(2)==HIGH){score=255;EEPROM.write(1,score);}
    if(score == 255){digitalWrite(3, HIGH);}
    Serial.println(score);
    }
     
  6. ALeska811

    ALeska811 Нерд

    только я не пойму int занимает 2 байта может хранить числа от -32 768 до 32 767 в 1 ячейке а у меня только 255
     
  7. b707

    b707 Гуру

    Ну вот, неплохо же выклядит, откуда ж вы вытащили эту бредятину, что была в первом посту??

    Замечания -
    1. В первой строчке loop() EEPROM. read используется неверно, почитайте в описании. что означает параметр в скобках этой функции

    2/ EEPROM.write() и EEPROM>read()предназначены для байтов., а у вас score описано как int. Может работать неверно
     
  8. ALeska811

    ALeska811 Нерд

    так как сделать лучше
     
  9. ALeska811

    ALeska811 Нерд

    Код (C++):
    #include <EEPROM.h>
    int score;
    int value;
    void setup() {
    pinMode(2,INPUT_PULLUP);
    pinMode(3,OUTPUT);
    pinMode(4,INPUT_PULLUP);
    Serial.begin(9600);
    }

    void loop() {
    if(!digitalRead(4)==HIGH){score = EEPROM.read(score);}
    if(!digitalRead(2)==HIGH){score=4500;EEPROM.write(1,score);}
    if(score == 4500){digitalWrite(3, HIGH);}
    Serial.println(score);
    }
    вот не получается так чтобы выводилось 4500
     
  10. b707

    b707 Гуру

    это вы о чем?
     
  11. ALeska811

    ALeska811 Нерд

    максимум запоминает 255
     
  12. b707

    b707 Гуру

    я вам обьяснил две ваши ошибки - как раз из-за них у вас и не работает. Из-за обеих.
     
  13. ALeska811

    ALeska811 Нерд

    я так понимаю нужно через get и put
     
  14. b707

    b707 Гуру

    не спрашивайте, пробуйте.
    привыкайте разбираться сами, а не ждать умных советов в форумах
     
  15. ALeska811

    ALeska811 Нерд

    пробовал через put даже нашёл скетч в инете, но пишет
    class EEPROMClass' has no member named 'put'
     
  16. b707

    b707 Гуру

    а на какой плате ардуино вы пробуйете?
     
  17. ALeska811

    ALeska811 Нерд

    не совсем ардуино wavgat uno r3
     
  18. b707

    b707 Гуру

    с этого надо было начинать... с этим.... я не работаю

    Вавгат - это не просто китайский клон ардуино, это самостоятельная плата, которая несовместима со многими библиотеками ардуино. Я бы КАТЕГОРИЧЕСКИ НЕ СОВЕТОВАЛ начинать с нее обучение.

    Насчет ЕЕПРОМ советую поискать на старых форумах темы "как сохранить / прочитать float в EEPROM" - когда не было put и get, все типы данных писали в ЕЕПРОМ, разбивая их предварительно на байты. Но эта тема предполает некий базис в языке С, она не для новичков.
     
  19. b707

    b707 Гуру

  20. parovoZZ

    parovoZZ Гуру

    Кто сказал, что int занимают одну ячейку памяти?