Поле чудес на Arduino
- Войдите на сайт для отправки комментариев
Пт, 18/05/2018 - 19:30
Здравствуйте, я новичок в программировании и ардуино.
Решил написать "Поле чудес", работают вывод звездочек , возможно выбор букв,
но при выборе правильной буквы не меняется строка звездочек.
Помогите,пожалуйста.
#include <LiquidCrystal.h> char s; LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int i = 0; char lang[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; #define BTN_UP 1 #define BTN_DOWN 2 #define BTN_LEFT 3 #define BTN_RIGHT 4 #define BTN_SELECT 5 #define BTN_NONE 10 int detectButton() { int keyAnalog = analogRead(A0); if (keyAnalog < 100) { return BTN_RIGHT; } else if (keyAnalog < 200) { return BTN_UP; } else if (keyAnalog < 400) { return BTN_DOWN; } else if (keyAnalog < 600) { return BTN_LEFT; } else if (keyAnalog < 800) { return BTN_SELECT; } else { return BTN_NONE; } } void clearLine(int line) { lcd.setCursor(0, line); lcd.print(" "); } void printDisplay(String message) { Serial.println(message); lcd.setCursor(0, 0); lcd.print(message); delay(1000); clearLine(0); } void printDisplay2(String message) { Serial.println(message); lcd.setCursor(0, 1); lcd.print(message); delay(3000); clearLine(1); } char enterArd() { int button = detectButton(); switch (button) { case BTN_UP: printDisplay2(String::String(lang[++i])); break; case BTN_DOWN: printDisplay2(String::String(lang[--i])); break; case BTN_LEFT: break; case BTN_RIGHT: break; case BTN_SELECT: return lang[i]; break; default: break; } } void setup() { lcd.begin(16, 2); } void loop() { char c[10], k[10]; bool t = false; c[10] = "TECHNOLOGY"; for (int i1 = 0; i1 < 10; i1++) k[i1] = '*'; while (t == false) { printDisplay(String::String(k)); s = enterArd(); for (int i1 = 0; i1 < 10; i1++) { if (c[i1] == s) { k[i1] = s; printDisplay(String::String(k)); } } for (int i1 = 0; i1 < 10; i1++) { if (k[i1] == '*') { t = false; } else t = true; } } }
Не знаю для чего Вы написали строки 110-116, но они полностью эквивалентны вот такой записи:
и ничему больше. Вы это имели в виду, когда писали эти строки?
Не знаю для чего Вы написали строки 110-116, но они полностью эквивалентны вот такой записи:
и ничему больше. Вы это имели в виду, когда писали эти строки?
Я сделал 110-116 с целью проверить :отгадали ли слово.
Я не знаю, какова была цель, но написано там точто то, что я написал одной строкой - вряд ли таким способом можно какое-то слово проверить.
Я не знаю, какова была цель, но написано там точто то, что я написал одной строкой - вряд ли таким способом можно какое-то слово проверить.
Оно делает пробежку по массиву - проверяет: есть ли в заданном массиве еще звездочки, если нет,то слово отгадано,если есть,то продолжаем
Тогда вам нужно выпрыгивать досрочно из цикла. В противном случае, как уже намекнули, во внимание принимается только последний элемент массива.
Тогда вам нужно выпрыгивать досрочно из цикла. В противном случае, как уже намекнули, во внимание принимается только последний элемент массива.
Расскажите поподробнее
Тогда вам нужно выпрыгивать досрочно из цикла. В противном случае, как уже намекнули, во внимание принимается только последний элемент массива.
Расскажите поподробнее
О чем?
Тогда вам нужно выпрыгивать досрочно из цикла. В противном случае, как уже намекнули, во внимание принимается только последний элемент массива.
Расскажите поподробнее
О чем?
Как исправить неработающий фрагмент кода
Оно делает пробежку по массиву - проверяет: есть ли в заданном массиве еще звездочки, если нет,то слово отгадано,если есть,то продолжаем
Пробежку по массиву оно конечно делает, но исключительно из спортивных соображений. Все результаты, кроме последнего, напрочь выбрасываются за ненадобностью.
Вы смотрели строчку, которую я Вам написал? Или нет?
Так вот, на самом деле, она делает только то, что я написал - смотрит на самый последний элемент массива, полностью игнорируя все остальные. Именно так у Вас написан код. Думайте, исправляйте.
О чем?
Как исправить неработающий фрагмент кода
Вы неправильно понимаете характер помощи, которую можете здесь получить.
Вам уже предельно подробно всё рассказано в моих сообщениях (особенно, в последнем - #10). И это всё. Исправлять код Вам придётся самому. Ну, или заказывать написание кода зе деньги (это в другом разделе), или искать другой форум. Здесь не принято писать коды за новичков. Здесь им подсказывают, помогают найти ошибку, а писать - это самостоятельно.
О чем?
Как исправить неработающий фрагмент кода
Вы неправильно понимаете характер помощи, которую можете здесь получить.
Вам уже предельно подробно всё рассказано в моих сообщениях (особенно, в последнем - #10). И это всё. Исправлять код Вам придётся самому. Ну, или заказывать написание кода зе деньги (это в другом разделе), или искать другой форум. Здесь не принято писать коды за новичков. Здесь им подсказывают, помогают найти ошибку, а писать - это самостоятельно.
Так понимаю,что нужно после t = false делать break. Большое спасибо за помощь :D
Будем пробовать еще.