Ви не увійшли.
Сторінки 1
Добрый вечер!
Прощу помощи у опытных юзеров!
Уже обращался с этим вопросом, получил пинок нужном направлении, однако усвоил не до конца.
Суть: Нужен проверщик ответов. Т.е. заранее прописываем правильные ответы, задаем вопросы, проверяем, и выводим на дисплей результат. Если ответ правильный - переходим к следующему. В арсенале ардуинка, LCD, мембранная клава.
Вот код:
#include <Keypad.h>
#include <LCD_1602_RUS.h>
#include <Password.h>
#include <Servo.h>
#include <avr/pgmspace.h>
#define Q_COUNT 4
Servo servo;
LCD_1602_RUS lcd(0x27, 16, 2);
const char asnwer_good[] PROGMEM = "Правильно";
const char answer_bad[] PROGMEM = "Неправильно!";
const char answers[] PROGMEM = { 'A', 'C', 'D', 'A' };// тут сидят правильные ответы
const char question01[] PROGMEM = "Первый вопрос?";
const char question02[] PROGMEM = "Второй вопрос?";
const char question03[] PROGMEM = "Третий вопрос?";
const char question04[] PROGMEM = "Четвертый вопрос?";
const char* const questions[] PROGMEM = { question01, question02, question03, question04 };
char buffer[90];
char key_answer;
const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {12, 11, 10, 9}; // тут пишем диджитал пины к которым клава коннектится к ардуинке.
byte colPins[COLS] = {8, 7, 6, 5}; // Просто тупо слева направо первые 4 это ROWS последние 4 COLS.
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
servo.attach(2);
lcd.begin();
}
void loop() {
// Проходим по списку вопросов
for (int i = 0; i < Q_COUNT; i++)
{
strcpy_P(buffer, (char*)pgm_read_word(&(questions[i])));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(buffer);
if (pgm_read_word_near(answers + i) == keypad.getKey())
{
strcpy_P(buffer, (char*)pgm_read_word(&(asnwer_good)));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(buffer);
} else {
strcpy_P(buffer, (char*)pgm_read_word(&(answer_bad)));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(buffer);
// Выходим из цикла / начинаем сначала.
break;
}
}
}
Суть проблеммы: не вижу свою ошибку. Вроде-бы умные люди мне показали как надо, я подправил под свои нужны, а все-равно не работает.
Как сделать "Проверщик ответов"?
Неактивний
Сторінки 1