Решение проблем с выполнениями условий, функций и т.п.

Тема в разделе "Arduino & Shields", создана пользователем BeggingOrHelping, 25 мар 2018.

  1. BeggingOrHelping

    BeggingOrHelping Нерд

    Добрый день. Пожалуйста, помогите мне со скетчем:

    #define FIRST_POSITION 0 //первая позиция буквы
    #define LAST_POSITION 15 //...и последняя
    #include <LiquidCrystal.h>//библиотека для lcd
    LiquidCrystal lcd(2, 3, 4, 5, 10, 12); //пины для экрана
    void setup() {
    pinMode(13, INPUT_PULLUP); //к 13-му пину подключаю кнопку (уже со встроенной подтяжкой)
    lcd.begin(16, 2);
    }

    void ground() { //нижняя земля
    lcd.setCursor(0, 1); //здесь не знаю как сократитьть а то пишу lcd.write() по 16 раз!
    lcd.write(0xFF);
    lcd.write(0xFF); // 0xFF - это блоки
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0x20); //это пробел
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    }

    void loop() {
    for (int placeHero = FIRST_POSITION; placeHero <= FIRST_POSITION, ++placeHero) { //здесь я получаю ошибку!
    lcd.setCursor(placeHero, 0);
    lcd.print("E"); // буква Е будет перемещаться по экрану
    ground(); // а внизу будет показана земля
    delay(200);
    lcd.clear();
    if (++placeHero == 5 && !digitalRead(13)) { // если буква Е на 5-м блоке и нажата кнопка
    continue; //в том же духе продолжаем до конца
    lcd.setCursor(placeHero, 0);
    lcd.print("E");
    ground();
    delay(200);
    lcd.clear();
    }
    else if (++placeHero == 5 && digitalRead(13)) { // а если НЕ нажата...
    break; // то обрываемся
    return loop();
    }
    }
    }
    Я пишу игру на ардуино и столкнулся с такоу проблемой. Пожалуйста, помогите. Заранее благодарю!
     
  2. Arduino_man

    Arduino_man Гик

    Господа форумчане, не обижайтесь на него! Он очень хотел поставить код правильно, но как и у других новичков, у него не получилось. Приходится помогать:
    Код (C++):
    #define FIRST_POSITION 0 //первая позиция буквы
    #define LAST_POSITION 15 //...и последняя
    #include <LiquidCrystal.h>//библиотека для lcd
    LiquidCrystal lcd(2, 3, 4, 5, 10, 12); //пины для экрана
    void setup() {
    pinMode(13, INPUT_PULLUP); //к 13-му пину подключаю кнопку (уже со встроенной подтяжкой)
    lcd.begin(16, 2);
    }

    void ground() { //нижняя земля
    lcd.setCursor(0, 1); //здесь не знаю как сократитьть а то пишу lcd.write() по 16 раз!
    lcd.write(0xFF);
    lcd.write(0xFF); // 0xFF - это блоки
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0x20); //это пробел
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    lcd.write(0xFF);
    }

    void loop() {
    for (int placeHero = FIRST_POSITION; placeHero <= FIRST_POSITION, ++placeHero) { //здесь я получаю ошибку!
    lcd.setCursor(placeHero, 0);
    lcd.print("E"); // буква Е будет перемещаться по экрану
    ground(); // а внизу будет показана земля
    delay(200);
    lcd.clear();
    if (++placeHero == 5 && !digitalRead(13)) { // если буква Е на 5-м блоке и нажата кнопка
    continue; //в том же духе продолжаем до конца
    lcd.setCursor(placeHero, 0);
    lcd.print("E");
    ground();
    delay(200);
    lcd.clear();
    }
    else if (++placeHero == 5 && digitalRead(13)) { // а если НЕ нажата...
    break; // то обрываемся
    return loop();
    }
    }
    }
     
    Последнее редактирование: 25 мар 2018
    BeggingOrHelping нравится это.
  3. BeggingOrHelping

    BeggingOrHelping Нерд

    Так что же делать?
     
  4. BeggingOrHelping

    BeggingOrHelping Нерд

    Показывается ошибка
     
  5. Arduino_man

    Arduino_man Гик

    Какая ошибка-то?
     
  6. BeggingOrHelping

    BeggingOrHelping Нерд

    Ну вот вы мне что за скетч сейчас выложили? Он ведь точно такой же, как мой... Ошибка в цикле for
     
  7. BeggingOrHelping

    BeggingOrHelping Нерд

    А millis() подойдёт?
     
  8. ostrov

    ostrov Гуру

    Я вижу в строке где ошибка запятю вместо точки с запятой. Дальше смотреть лениво.
     
    BeggingOrHelping нравится это.
  9. parovoZZ

    parovoZZ Гуру

    Синтаксис цикла for изучи, чудо))) А то и в миллис кучу ошибок наделаешь.
     
  10. BeggingOrHelping

    BeggingOrHelping Нерд

    ostrov. Спасибо за подсказку. Но буква перемещается не последовательно, а как то не так. Пожалуйста, подскажите.
     
    Последнее редактирование: 1 апр 2018
  11. ostrov

    ostrov Гуру

    Как минимум через раз прыгает, один раз увеличивается в цикле и пару раз в условиях. Знаете что это выражение обозначает?
    Код (C++):
    ++placeHero
     
  12. BeggingOrHelping

    BeggingOrHelping Нерд

    ++placeHero это увеличивать его значение на 1
     
  13. ostrov

    ostrov Гуру

    Ну так и нафига его увеличивать три раза за итерацию?
     
  14. BeggingOrHelping

    BeggingOrHelping Нерд

    В смысле за итерацию?
     
  15. ostrov

    ostrov Гуру

  16. DetSimen

    DetSimen Guest

    мошт, ты для начала Кернигана с Ритчи осилишь всё-же? Чтоб хоть появилась общая тема для разговора
     
    b707 и parovoZZ нравится это.
  17. parovoZZ

    parovoZZ Гуру

    ТС понимает разницу между преинкрементом и постиинкрементом?
     
  18. Asper Daffy

    Asper Daffy Иксперд

    Патамушта ардуина - среда для бландинок и знать ничиво ни нада! Ставишь розовый светадиод и он мигаить! А вы - умники, спецом тут туман напускаити, выдумываете сложности, вместо таво, чтобы падсказать. Это вы спицально, чтоб нармальных пацанов атвадить и и тока самим светадидам мигать!
     
    CYITEP_BAC9I и parovoZZ нравится это.
  19. b707

    b707 Гуру

    "Неприличными словами не выражаться!" (с)

    Мне интересно, сколько нашему ТС лет. Ставлю, что ему 13
     
  20. SergeiL

    SergeiL Оракул Модератор

    А чем Вам не нравится среда Ардуино? Как по мне - компактная и легкая! Есть все исходники, правь как хочешь, что еще нужно?
    Чем, по Вашему, среда Ардуино отличается от GCC, в плане написания кода, использования ресурсов контроллера?