Отчёт по практике ОС и праграмирование. Отчёт по практике. Отчёт по практике Программирование и ос
Скачать 0.61 Mb.
|
Отчёт по практике Программирование и ОС Подведение итогов Выполнили Александр Попов _____ Добжанский Никита _____ Руководитель Вахит-хан Р. ____ клавиатуры 4х4 с драйверами через Ардуино Уно. 3 стр. Схема подключения клавиатуры к ардуино 4 стр. Код 5 стр. 2. Работа в Visual studio. 2.1 Кнопка Hello world, 8 стр. 2.2 «крестики нолики» 8 стр. 2.3 код «крестики нолики» 9 стр. 2.4 калькулятор. 15 стр. 3.1 теория игр, 16 стр. 3.2 калькулятор на Ардуино, 17 стр. 3.2 схема 18 стр. 3.2 код 19 стр. 3.3 работа со схемами в сплан 28 cтр. 3.3 пример работы в Splan 29 стр. 4. Послесловие 30 стр.
Клавиатура 4х4 Сегодня мы изучили клавиатуры 4х4 и драйверов через Ардуино Уно. Была поставлена задача обеспечить работоспособность клавиатуры при нажатии более чем 3 клавиш. Изначально задача была решена при помощи считывания нажатия каждой клавиши но считывалось максимум 2-е клавиши после чего пришли к другому варианту решения поставленной задачи. При помощи постоянной и поочередной проверки строк на наличие сигнала.
const byte stroka1 = 4; //вход ардуино считывание 1 строки const byte stroka2 = 5; //вход ардуино считывание 2 строки const byte stroka3 = 6; //вход ардуино считывание 3 строки const byte stroka4 = 7; //вход ардуино считывание 4 строки const byte stolbec1 = 8; //выход ардуино опрос 1 столбца const byte stolbec2 = 9; //выход ардуино опрос 2 столбца const byte stolbec3 = 10; //выход ардуино опрос 3 столбца const byte stolbec4 = 11; //выход ардуино опрос 4 столбца const byte led1 = 12; //сигнал жёлтый, желтый мигающий-желтый верхний const byte led2 = A0; //сигнал красный const byte led3 = 2; //сигнал зелёный const byte led4 = 3; //сигнал жёлтый-желтый нижний const byte led5 = A1; //сигнал луннобелый мигающий - пригласительный //variables that will change byte strokaState1 = 30; //входная переменная столбец 1 byte strokaState2 = 31; //входная переменная столбец 2 byte strokaState3 = 32; //входная переменная столбец 3 byte strokaState4 = 33; //входная переменная столбец 4 byte myPins[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; //создание массива из 16 ячеек void setup() { Serial.begin(9600); pinMode(stroka1, INPUT); //вход считывание 1 строки pinMode(stroka2, INPUT); //вход считывание 2 строки pinMode(stroka3, INPUT); //вход считывание 3 строки pinMode(stroka4, INPUT); //вход считывание 3 строки pinMode(stolbec1, OUTPUT); //выход опрос 1 столбца pinMode(stolbec2, OUTPUT); //выход опрос 2 столбца pinMode(stolbec3, OUTPUT); //выход опрос 3 столбца pinMode(stolbec4, OUTPUT); //выход опрос 4 столбца pinMode(led1, OUTPUT); //выход сигнал жёлтый, желтый мигающий pinMode(led2, OUTPUT); //выход сигнал красный pinMode(led3, OUTPUT); //выход сигнал зелёный pinMode(led4, OUTPUT); //выход сигнал жёлтый pinMode(led5, OUTPUT); //выход сигнал луннобелый мигающий - пригласительный digitalWrite(stroka1, HIGH); //вход строка 1 в лог."1" digitalWrite(stroka2, HIGH); //вход строка 2 в лог."1" digitalWrite(stroka3, HIGH); //вход строка 3 в лог."1" digitalWrite(stroka4, HIGH); //вход строка 4 в лог."1" digitalWrite(stolbec1, HIGH); //выход столбец 1 в лог."1" digitalWrite(stolbec2, HIGH); //выход столбец 2 в лог."1" digitalWrite(stolbec3, HIGH); //выход столбец 3 в лог."1" digitalWrite(stolbec4, HIGH); //выход столбец 4 в лог."1" //digitalWrite(led1, LOW); //начальное выключение сигнал жёлтый, желтый мигающий, включение при HIGH //digitalWrite(led2, LOW); //начальное выключение сигнал красный, включение при HIGH //digitalWrite(led3, LOW); //начальное выключение сигнал зелёный, включение при HIGH //digitalWrite(led4, LOW); //начальное выключение сигнал жёлтый, включение при HIGH //digitalWrite(led5, LOW); //начальное выключение сигнал луннобелый мигающий - пригласительный, включение при HIGH } void loop() { //опрос матрицы оптопар //первый цикл опроса strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1 strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2 strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3 strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4 digitalWrite(stolbec1, LOW);//писать 0 в столбец 1 digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2 digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3 digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4 if(stolbec1 == LOW);//если столбец 1 в 0, Serial.print ("A");//вывести в сериал порт значение столбец 1 if(strokaState1 == LOW);//если строка 1 в 0, myPins[0] = strokaState1;//то присвоить ячейке 0 значение 0 Serial.print (myPins[0]);//вывести в сериал порт значение ячейки 0 if(strokaState2 == LOW);//если строка 2 в 0, myPins[1] = strokaState2;//то присвоить ячейке 1 значение 0 Serial.print (myPins[1]);//вывести в сериал порт значение ячейки 1 if(strokaState3 == LOW);//если строка 3 в 0, myPins[2] = strokaState3;//то присвоить ячейке 2 значение 0 Serial.print (myPins[2]);//вывести в сериал порт значение ячейки 2 if(strokaState4 == LOW);//если строка 4 в 0, myPins[3] = strokaState4;//то присвоить ячейке 3 значение 0 Serial.print (myPins[3]);//вывести в сериал порт значение ячейки 3 //второй цикл опроса strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1 strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2 strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3 strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4 digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1 digitalWrite(stolbec2, LOW);//писать 0 в столбец 2 digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3
digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4 if(stolbec2 == LOW);//если столбец 2 в 0, Serial.print ("B");//вывести в сериал порт значение столбец 2 if(strokaState1 == LOW);//если строка 1 в 0, myPins[4] = strokaState1;//то присвоить ячейке 4 значение 0 Serial.print (myPins[4]);//вывести в сериал порт значение ячейки 4 if(strokaState2 == LOW);//если строка 2 в 0, myPins[5] = strokaState2;//то присвоить ячейке 5 значение 0 Serial.print (myPins[5]);//вывести в сериал порт значение ячейки 5 if(strokaState3 == LOW);//если строка 3 в 0, myPins[6] = strokaState3;//то присвоить ячейке 2 значение 0 Serial.print (myPins[6]);//вывести в сериал порт значение ячейки 6 if(strokaState4 == LOW);//если строка 4 в 0, myPins[7] = strokaState4;//то присвоить ячейке 3 значение 0 Serial.print (myPins[7]);//вывести в сериал порт значение ячейки 7 //третий цикл опроса strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1 strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2 strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3 strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4 digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1 digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2 digitalWrite(stolbec3, LOW);//писать 0 в столбец 3 digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4 if(stolbec3 == LOW);//если столбец 3 в 0, Serial.print ("C");//вывести в сериал порт значение столбец 3 if(strokaState1 == LOW);//если строка 1 в 0, myPins[8] = strokaState1;//то присвоить ячейке 8 значение 0 Serial.print (myPins[8]);//вывести в сериал порт значение ячейки 8 if(strokaState2 == LOW);//если строка 2 в 0, myPins[9] = strokaState2;//то присвоить ячейке 9 значение 0 Serial.print (myPins[9]);//вывести в сериал порт значение ячейки 9 if(strokaState3 == LOW);//если строка 3 в 0, myPins[10] = strokaState3;//то присвоить ячейке 10 значение 0 Serial.print (myPins[10]);//вывести в сериал порт значение ячейки 10 if(strokaState4 == LOW);//если строка 4 в 0, myPins[11] = strokaState4;//то присвоить ячейке 11 значение 0 Serial.print (myPins[11]);//вывести в сериал порт значение ячейки 11 //четвертый цикл опроса strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1 strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2 strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3
strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4 digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1 digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2 digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3 digitalWrite(stolbec4, LOW);//писать 0 в столбец 4 if(stolbec4 == LOW);//если столбец 4 в 0, Serial.print ("D");//вывести в сериал порт значение столбец 4 if(strokaState1 == LOW);//если строка 1 в 0, myPins[12] = strokaState1;//то присвоить ячейке 12 значение 0 Serial.print (myPins[12]);//вывести в сериал порт значение ячейки 12 if(strokaState2 == LOW);//если строка 2 в 0, myPins[13] = strokaState2;//то присвоить ячейке 13 значение 0 Serial.print (myPins[13]);//вывести в сериал порт значение ячейки 13 if(strokaState3 == LOW);//если строка 3 в 0, myPins[14] = strokaState3;//то присвоить ячейке 14 значение 0 Serial.print (myPins[14]);//вывести в сериал порт значение ячейки 14 if(strokaState4 == LOW);//если строка 4 в 0, myPins[15] = strokaState4;//то присвоить ячейке 15 значение 0 Serial.print (myPins[15]);//вывести в сериал порт значение ячейки 15 digitalWrite(led1, LOW); //выключение сигнал жёлтый верхний, желтый верхний мигающий, включение при HIGH digitalWrite(led2, HIGH); //ВКЛЮЧЕНИЕ СИГНАЛ КРАСНЫЙ digitalWrite(led3, LOW); //выключение сигнал зелёный, включение при HIGH digitalWrite(led4, LOW); //выключение сигнал жёлтый нижний, включение при HIGH digitalWrite(led5, LOW); //выключение сигнал луннобелый мигающий - пригласительный, включение при HIGH Serial.println (" "); // вывести в сериал порт "пробел", перенос каретки на новую строку // включение огней светофора // красный и луннобелый мигающий включить if(myPins[2]==LOW&&myPins[3]==LOW) { digitalWrite(led5, HIGH); // луннобелый мигающий включить delay(1000); digitalWrite(led5, LOW); // луннобелый мигающий выключить delay(1000); Serial.println ("RED WHITE BLINK"); // вывести в сериал порт "RED" } // зеленый включить if(myPins[4]==LOW&&myPins[5]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led3, HIGH); // зеленый включить Serial.println ("GREEN"); // вывести в сериал порт "GREEN" } // зеленый МИГАЮЩИЙ включить if(myPins[5]==LOW&&myPins[6]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led3, HIGH); // зеленый включить delay(1000); digitalWrite(led3, LOW); // зеленый выключить delay(1000); Serial.println ("GREEN BLINK"); // вывести в сериал порт "GREEN BLINK" } // желтый верхний включить if(myPins[6]==LOW&&myPins[7]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led1, HIGH); // желтый верхний включить Serial.println ("YELOW"); // вывести в сериал порт "YELOW" } // желтый верхний МИГАЮЩИЙ включить if(myPins[8]==LOW&&myPins[9]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led1, HIGH); // желтый верхний включить delay(1000); digitalWrite(led1, LOW); // желтый верхний выключить delay(1000); Serial.println ("YELOW BLINK"); // вывести в сериал порт "YELOW BLINK" } // желтый верхний МИГАЮЩИЙ и желтый нижний включить if(myPins[10]==LOW&&myPins[11]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led4, HIGH); // желтый нижний включить digitalWrite(led1, HIGH); // желтый верхний мигающий включить delay(1000); digitalWrite(led1, LOW); // желтый верхний мигающий выключить delay(1000); Serial.println ("YELOW @ YELOW BLINK"); // вывести в сериал порт "YELOW @ YELOW BLINK" } // желтый верхний и желтый нижний включить if(myPins[12]==LOW&&myPins[13]==LOW) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led4, HIGH); // желтый нижний включить digitalWrite(led1, HIGH); // желтый верхний включить delay(500); Serial.println ("YELOW @ YELOW"); // вывести в сериал порт "YELOW @ YELOW" } // желтый верхний и белый включить if(myPins[14]==LOW&&myPins[15]==LOW&&myPins[0]==HIGH&&myPins[1]==HIGH&&myPins[2]==HIGH&&myPins[3]==HIGH&&myPins[4]==HIGH&&myPins[5]==HIGH) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led1, HIGH); // желтый верхний включить digitalWrite(led5, HIGH); // белый включить delay(500); Serial.println ("YELOW @ WHITE"); // вывести в сериал порт "YELOW @ WHITE" } // зеленый и белый включить if(myPins[0]==LOW&&myPins[1]==LOW&&myPins[2]==HIGH&&myPins[3]==HIGH&&myPins[4]==HIGH&&myPins[5]==HIGH) { digitalWrite(led2, LOW); // красный выключить digitalWrite(led3, HIGH); // зеленый включить digitalWrite(led5, HIGH); // белый включить Serial.println ("GREEN @ WHITE"); // вывести в сериал порт "GREEN @ WHITE" } } // End loop
Кнопка Hello Word Этот проект Был как простое ознакомление с Visual studio. Это базовый проект так что не будем на нем заострять внимание. Крестики нолики Этот проект тоже считается базовым но его создание мы рассмотрим поближе Для начала мы создали три ряда по три кнопки как в пред идущем проекте а далее писали код
#include using namespace std; void show_cells(); void show_cells2(); void make_move(int num); void make_move2(int num); void result(); void result2(); char check(); char check2(); int write(); int write2(); char cells[9] = { '-', '-', '-', '-', '-', '-', '-', '-', '-' }; char cellss[25] = { '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' }; int count1 = 0, count2 = 0; int count11 = 0, count22 = 0; char win = '-'; class player{ private: char name[20]; public: void setName(){ char n[20]; cin >> n; strcpy_s(name, n); } char *getName(){ return name; } void printWinner(int n){ if (n==1) cout << name << " WINNER! U'R SCORE = " << count1 << endl; else cout << name << " WINNER! U'R SCORE = " << count2 << endl; } }; player PlayerName1, PlayerName2; int main() { int a, b = 1; //???? ??????? ????. cout << "MENU" << endl; cout << "Enter a value 1 for 3x3 game" << endl;
cout << endl; cout << "Enter a value 2 for 5x5 game" << endl; cout << endl; cout << "0 - Exit " << endl; cout << endl; while (b == 1) { cin >> a; switch (a) { case 1: write(); break; case 2: write2(); break; case 0: b = 0; break; } } system("pause"); return 0; } int write()//??????? ???? 3?3 { system("color F0"); for (int i = 0; i < 9; i++) { cells[i] = '-'; } cout << "Enter the name of the 1st player: "; PlayerName1.setName(); cout << "Enter the name of the 2st player: "; PlayerName2.setName(); cout << "\n"; cout << "------------" << "\n" << endl; cout << "Numbers of cells:" << endl; cout << "____________" << endl; cout << "-" << 1 << "-" << '|' << "-" << 2 << "-" << '|' << "-" << 3 << "-" << "|" << endl; cout << "-" << 4 << "-" << '|' << "-" << 5 << "-" << '|' << "-" << 6 << "-" << "|" << endl; cout << "-" << 7 << "-" << '|' << "-" << 8 << "-" << '|' << "-" << 9 << "-" << "|" << endl; cout << "------------" << endl; for (int move = 1; move <= 9; move++) { if (move % 2) make_move(1); else make_move(2); show_cells(); if (move >= 5)
{ win = check(); if (win != '-') break; } } result(); return 0; } int write2()//??????? ???? 5?5 { system("color F0"); for (int i = 0; i < 25; i++)//???????? ???????? ???? { cellss[i] = '-'; } cout << "Enter the name of the 1st player: ";//???? ???? ??????? PlayerName1.setName(); cout << "Enter the name of the 2st player: "; PlayerName2.setName(); cout << "\n"; cout << "------------" << "\n" << endl; cout << "Numbers of cells:" << endl; cout << "____________" << endl; cout << " -" << 1 << "-" << '|' << " -" << 2 << "-" << '|' << " -" << 3 << "-" << '|' << " -" << 4 << "-" << '|' << "-" << 5 << "-" << " |" << endl;//??????? ??? ????? ?????? ?? ?????? ?????? cout << " -" << 6 << "-" << '|' << " -" << 7 << "-" << '|' << " -" << 8 << "-" << '|' << " -" << 9 << "-" << '|' << "-" << 10 << "-" << "|" << endl; cout << "-" << 11 << "-" << '|' << "-" << 12 << "-" << '|' << "-" << 13 << "-" << '|' << "-" << 14 << "-" << '|' << "-" << 15 << "-" << "|" << endl; cout << "-" << 16 << "-" << '|' << "-" << 17 << "-" << '|' << "-" << 18 << "-" << '|' << "-" << 19 << "-" << '|' << "-" << 20 << "-" << "|" << endl; cout << "-" << 21 << "-" << '|' << "-" << 22 << "-" << '|' << "-" << 23 << "-" << '|' << "-" << 24 << "-" << '|' << "-" << 25 << "-" << "|" << endl; cout << "------------" << endl; for (int move = 1; move <= 25; move++) { if (move % 2) make_move2(1); else make_move2(2); show_cells2(); if (move >= 9) { win = check2(); if (win != '-') break; }
} result2(); return 0; } void show_cells() { cout << "_____________" << endl; cout << "|-" << cells[0] << "-" << '|' << "-" << cells[1] << "-" << '|' << "-" << cells[2] << "-" << "|" << endl; cout << "|-" << cells[3] << "-" << '|' << "-" << cells[4] << "-" << '|' << "-" << cells[5] << "-" << "|" << endl; cout << "|-" << cells[6] << "-" << '|' << "-" << cells[7] << "-" << '|' << "-" << cells[8] << "-" << "|" << endl; cout << "-------------" << endl; } void show_cells2() { cout << "_____________________" << endl; cout << "|-" << cellss[0] << "-" << '|' << "-" << cellss[1] << "-" << '|' << "-" << cellss[2] << "-" << '|' << "-" << cellss[3] << "-" << '|' << "-" << cellss[4] << "-" << "|" << endl; cout << "|-" << cellss[5] << "-" << '|' << "-" << cellss[6] << "-" << '|' << "-" << cellss[7] << "-" << '|' << "-" << cellss[8] << "-" << '|' << "-" << cellss[9] << "-" << "|" << endl; cout << "|-" << cellss[10] << "-" << '|' << "-" << cellss[11] << "-" << '|' << "-" << cellss[12] << "-" << '|' << "-" << cellss[13] << "-" << '|' << "-" << cellss[14] << "-" << "|" << endl; cout << "|-" << cellss[15] << "-" << '|' << "-" << cellss[16] << "-" << '|' << "-" << cellss[17] << "-" << '|' << "-" << cellss[18] << "-" << '|' << "-" << cellss[19] << "-" << "|" << endl; cout << "|-" << cellss[20] << "-" << '|' << "-" << cellss[21] << "-" << '|' << "-" << cellss[22] << "-" << '|' << "-" << cellss[23] << "-" << '|' << "-" << cellss[24] << "-" << "|" << endl; cout << "---------------------" << endl; } void make_move(int num) { if (num == 1) cout << PlayerName1.getName(); else cout << PlayerName2.getName(); cout << " enter a cell's number to make move: "; int cell; cin >> cell; cout << "\n"; while (cell > 9 || cell < 1 || cells[cell - 1] == 'O' || cells[cell - 1] == 'X') { cout << " Enter a CORRECT (1-9) cell's number to make move: "; cin >> cell; cout << "\n"; } if (num == 1) cells[cell - 1] = 'X'; else
cells[cell - 1] = 'O'; } void make_move2(int num) { //ввод символов Х-0. if (num == 1) cout << PlayerName1.getName(); else cout << PlayerName2.getName(); cout << " enter a cell's number to make move: "; int cell; cin >> cell; cout << "\n"; while (cell > 25 || cell < 1 || cellss[cell - 1] == 'O' || cellss[cell - 1] == 'X') { cout << " Enter a CORRECT (1-25) cell's number to make move: "; cin >> cell; cout << "\n"; } if (num == 1) cellss[cell - 1] = 'X'; else cellss[cell - 1] = 'O'; } void result() {//результат cout << "------------"; if (win == 'X') { count1 += 0 + 20; PlayerName1.printWinner(1); } else if (win == 'O') { count2 += 0 + 20;//счет PlayerName2.printWinner(23); } else cout << "Draw!!!" << endl; } void result2() { cout << "------------"; if (win == 'X') { count11 += 0 + 20; PlayerName1.printWinner(1); } else if (win == 'O')
{ count22 += 0 + 20; PlayerName1.printWinner(1); } else cout << "Draw!!!" << endl; } char check() { int i; for (i = 0; i < 3; i++) if (cells[i * 3 + 0] == cells[i * 3 + 1] && cells[i * 3 + 1] == cells[i * 3 + 2] && cells[i * 3 + 2] != '-') return cells[i * 3 + 1]; else if (cells[i] == cells[3 + i] && cells[3 + i] == cells[6 + i] && cells[6 + i] != '-') return cells[3 + i]; if ((cells[0] == cells[4] && cells[4] == cells[8] || cells[2] == cells[4] && cells[4] == cells[6]) && cells[4] != '-') return cells[4]; return '-'; } char check2() { //здесь вот нужно написать код для игры 5х5. } Калькулятор Калькулятор работал по тому же принципу. Создаётся несколько столбцов кнопок затем программируется программная часть в которой устройство и будет производить расчёты и выводить пользователю результат вычислений. Код сюда вставлять не будем по причине того что он занимает много места. Теория игр Мы изучили теорию игр на примере на которой базируется принцип игровой механики в играх в которых для победы требуется набрать определённое количество очков. Так же изучили алгоритм работы бота который позволяет в подобных играх побеждать без проигрыша при соблюдении поставленных условий которые не учитываются алгоритмом .На этом принципе Строится поведение ботов во многих играх так же эти принципом широко пользуются в азартных играх. Калькулятор на Arduino Нам были предоставлены Arduino uno ,жидко-кристалический дисплей и клавиатура 4х4 ну и соответственно соеденительные провода Предварительно собрав схему мы написали код. Была поставлена задача сделать функциональный калькулятор.
#include //Header file for LCD from https://www.arduino.cc/en/Reference/LiquidCrystal #include //Header file for Keypad from https://github.com/Chris--A/Keypad const byte ROWS = 4; // Four rows const byte COLS = 4; // Three columns // Define the Keymap char keys[ROWS][COLS] = { { '7', '8', '9', 'D' }, { '4', '5', '6', 'C' }, { '1', '2', '3', 'B' }, { '*', '0', '#', 'A' } }; byte rowPins[ROWS] = { 0, 1, 2, 3 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Create the Keypad const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected LiquidCrystal lcd(rs, en, d4, d5, d6, d7); long Num1, Num2, Number; char key, action; boolean result = false; void setup() { lcd.begin(16, 2); //We are using a 16*2 LCD display lcd.print("DIY Calculator"); //Display a intro message lcd.setCursor(0, 1); // set the cursor to column 0, line 1 lcd.print("-CircuitDigest"); //Display a intro message delay(2000); //Wait for display to show info lcd.clear(); //Then clean it }
void loop() { key = kpd.getKey(); //storing pressed key value in a char if (key != NO_KEY) DetectButtons(); if (result == true) CalculateResult(); DisplayResult(); } void DetectButtons() { lcd.clear(); //Then clean it if (key == '*') //If cancel Button is pressed { Serial.println("Button Cancel"); Number = Num1 = Num2 = 0; result = false; } if (key == '1') //If Button 1 is pressed { Serial.println("Button 1");
if (Number == 0) Number = 1; else Number = (Number * 10) + 1; //Pressed twice } if (key == '4') //If Button 4 is pressed { Serial.println("Button 4"); if (Number == 0) Number = 4; else Number = (Number * 10) + 4; //Pressed twice } if (key == '7') //If Button 7 is pressed { Serial.println("Button 7"); if (Number == 0) Number = 7; else Number = (Number * 10) + 7; //Pressed twice }
if (key == '0') { Serial.println("Button 0"); //Button 0 is Pressed if (Number == 0) Number = 0; else Number = (Number * 10) + 0; //Pressed twice } if (key == '2') //Button 2 is Pressed { Serial.println("Button 2"); if (Number == 0) Number = 2; else Number = (Number * 10) + 2; //Pressed twice } if (key == '5') { Serial.println("Button 5"); if (Number == 0) Number = 5; else Number = (Number * 10) + 5; //Pressed twice }
if (key == '8') { Serial.println("Button 8"); if (Number == 0) Number = 8; else Number = (Number * 10) + 8; //Pressed twice } if (key == '#') { Serial.println("Button Equal"); Num2 = Number; result = true; } if (key == '3') { Serial.println("Button 3"); if (Number == 0) Number = 3; else Number = (Number * 10) + 3; //Pressed twice } if (key == '6') {
Serial.println("Button 6"); if (Number == 0) Number = 6; else Number = (Number * 10) + 6; //Pressed twice } if (key == '9') { Serial.println("Button 9"); if (Number == 0) Number = 9; else Number = (Number * 10) + 9; //Pressed twice } if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Detecting Buttons on Column 4 { Num1 = Number; Number = 0; if (key == 'A') { Serial.println("Addition"); action = '+'; } if (key == 'B') { Serial.println("Subtraction"); action = '-'; } if (key == 'C') { Serial.println("Multiplication");
action = '*'; } if (key == 'D') { Serial.println("Devesion"); action = '/'; } delay(100); } } void CalculateResult() { if (action == '+') Number = Num1 + Num2; if (action == '-') Number = Num1 - Num2; if (action == '*') Number = Num1 * Num2; if (action == '/') Number = Num1 / Num2; } void DisplayResult() {
lcd.setCursor(0, 0); // set the cursor to column 0, line 1 lcd.print(Num1); lcd.print(action); lcd.print(Num2); if (result == true) { lcd.print(" ="); lcd.print(Number); } //Display the result lcd.setCursor(0, 1); // set the cursor to column 0, line 1 lcd.print(Number); //Display the result } SPlan Это программа для создания схем и чертежей устройств. Программа проста в освоении и используется узконаправленно для создания схем .
Вывод За эту практику мы болле подробно изучили код, лучше стали собирать схемы и освоили некоторые программы. |