Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Реалізація практичної частини на Arduino↑ ⇐ ПредыдущаяСтр 4 из 4 Содержание книги
Поиск на нашем сайте
Приложение №2 Текст программы. // include the library code:#include <LiquidCrystal.h>#include "OneWire.h"#include <MsTimer2.h>OneWire ds(3); // on pin 10 (a 4.7K resistor is necessary)// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7);///////////menu///////////// int selectKey=0; int depthMenu=0; int selectingMenu=1;//////------cooler int countMenuSpeedCuuler; int speedCooler=255;/////////////////////////// int i=0; int pinCooler=10; int countMenu=1; int pinLed=A1; ///////cooler///// int coolrPin; int countMenuCuuler=1; int hightTemperature=30; int lowTemperatura=20; float celsius; boolean updateTemperature=false; ////////////////// int coolerMenuId=0; int coolerPort=2;void setup() { //initial main menu pinMode(pinCooler, OUTPUT); pinMode(pinLed, OUTPUT); lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("---Main menu----"); lcd.setCursor(0,1); lcd.print("1.set t* diapazon");} void loop() { int x; x = analogRead (0); ////////////////////////////////////////////////////////////////////_RIGHT_/////////////////////////////////////////////////////////////////// if (x < 60) { if(depthMenu==1&&countMenuCuuler==1){ hightTemperature++; crateMenuCooler(); } if(depthMenu==1&&countMenuCuuler==2){ lowTemperatura++; crateMenuCooler(); }//////////////////////////////////speed cooler///////////if(depthMenu==3&&countMenuSpeedCuuler==3){ ///////При свиборі пункта меню із швидкістю блокується усі перемінні,countMenuSpeedCuuler надається ключ по якому усі дії відбуваються if(speedCooler<255){ speedCooler= speedCooler+5; } //////лише із перемінними які відносяться до даного пункта меню crateMenuSpeedCool(); ////// } //////////////////////////////////speed cooler/////////// } ////////////////////////////////////////////////////////////////////_UP_////////////////////////////////////////////////////////////////////////// else if (x < 200) { //up if(depthMenu==0){ menuSelect(--countMenu); } if(depthMenu==1){ countMenuCuuler=1; crateMenuCooler(); } } ///////////////////////////////////////////////////////////////////_DOWN_//////////////////////////////////////////////////////////////////// else if (x < 400){ //down/ if(depthMenu==0){ menuSelect(++countMenu); } if(depthMenu==1){ countMenuCuuler=2; crateMenuCooler(); } } ///////////////////////////////////////////////////////////////_LEFT_/////////////////////////////////////////////////////////////////////////// else if (x < 600){ if(!depthMenu<1){ } if(depthMenu==1&&countMenuCuuler==1){ hightTemperature--; crateMenuCooler(); } if(depthMenu==1&&countMenuCuuler==2){ lowTemperatura--; crateMenuCooler(); } //////////////////////////////////speed cooler///////////if(depthMenu==3&&countMenuSpeedCuuler==3){ ///////При свиборі пункта меню із швидкістю блокується усі перемінні,countMenuSpeedCuuler надається ключ по якому усі дії відбуваються speedCooler-=5; //////лише із перемінними які відносяться до даного пункта меню crateMenuSpeedCool(); } //////////////////////////////////speed cooler/////////// } ////////////////////////////////////////////////////////////////_SELECT_///////////////////////////////////////////////////////////// else if (x < 800){ //selectswitch(selectingMenu){ case 1:crateMenuCooler();//createdMenuCooler selectKey++; depthMenu=1; break; case 2:crateMenuSpeedCool(); selectKey++; depthMenu=3; if(selectKey==2){ digitalWrite(pinCooler, LOW); clearLCD(3); } break case 3:createStartInfo(); selectKey++; depthMenu=2; if(selectKey==2){ MsTimer2::stop(); clearLCD(3); } break; } if(selectKey==2){ depthMenu=0; selectKey=0; menuSelect(1); lcd.setCursor(0,0); lcd.print("---Main menu----"); } } } void menuSelect(int downCount){ lcd.setCursor(0,1); delay(300); if(countMenu<1){ countMenu=3; downCount=3; }else if(countMenu>3){ countMenu=1; downCount=1; } switch(downCount){ case 1:lcd.print("1.set t' diapazon"); selectingMenu=1; break; case 2:lcd.print("2.set speed cool"); selectingMenu=2; break; case 3:lcd.print("3.start"); selectingMenu=3; } lcd.print(" "); }void crateMenuCooler(){ delay(300); clearLCD(3); depthMenu=1; lcd.setCursor(0,0); lcd.print("1. t* diapazon"); lcd.setCursor(0,1); if(countMenuCuuler==1){ lcd.print("High t*: "); lcd.print(hightTemperature); lcd.print(" T"); } if(countMenuCuuler==2){ lcd.print("Low t*: "); lcd.print(lowTemperatura); lcd.print(" T"); }; } void crateMenuSpeedCool(){ delay(300); clearLCD(3); depthMenu=3; lcd.setCursor(0,0); lcd.print("2.speed cooler"); lcd.setCursor(0,1); countMenuSpeedCuuler=3; lcd.print("speed: "); lcd.print(speedCooler); lcd.print(" rpm"); analogWrite(pinCooler, speedCooler); };void createStartInfo(){ delay(300); clearLCD(3); depthMenu=4; lcd.setCursor(0,0); lcd.print("3.--about info--"); lcd.setCursor(0,1); updateTemperature=true; MsTimer2::set(100, loadTemperature); // 500ms period MsTimer2::start(); lcd.print("L:"); lcd.print(lowTemperatura); lcd.print("T:"); lcd.print(celsius); lcd.print("H:"); lcd.print(hightTemperature); if(hightTemperature<celsius){ analogWrite(pinCooler, speedCooler); }else if(celsius<hightTemperature){ digitalWrite(pinCooler, LOW); } if(celsius<lowTemperatura){ digitalWrite(pinLed,HIGH);} else if(celsius>lowTemperatura){ digitalWrite(pinLed,LOW);} } void clearLCD(int i){ switch(i){ case 1: lcd.setCursor(0,0); lcd.print(" "); break; case 2: lcd.setCursor(0,1); lcd.print(" "); break; case 3: lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); break; } } void loadTemperature(){ byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; if (!ds.search(addr)) { ds.reset_search(); delay(250); return; } ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for (i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } // Convert the data to actual temperature // because the result is a 16 bit signed integer, it should // be stored to an "int16_t" type, which is always 16 bits // even when compiled on a 32 bit processor. int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data[7] == 0x10) { // "count remain" gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); // at lower res, the low bits are undefined, so let's zero them if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms //// default is 12 bit resolution, 750 ms conversion time } celsius = (float)raw / 16.0; if(updateTemperature==true){ createStartInfo(); } }
Приложение №2 Блок-схема
Граф
Состояния: a1 – Начало программы a2 – Переход на верхнее меню а3 – Переход на нижнее меню а4 – Выбор меню а5 – Находимся на меню №3 а6 – Находимся на меню №1 а7 – Переход на верхнее подменю а8 – Переход на нижнее подменю а9 – Находимся в подменю №2 а10 – Находимся в подменю №1 Условия: Х1 – Если нажата кнопка вверх Х2 – Если нажата кнопка вниз Х3 – Если нажата кнопка выбора Х4 – Если нажата кнопка сброса Х5 – Если счётчик меню меньше 1 Х6 – Если счётчик меню больше 3 Х7 – Если кнопка выбора нажата больше одного раза Х8 – Если нажата кнопка вверх в подменю Х9 – Если нажата кнопка вниз в подменю Х10 – Если счётчик подменю меньше 1 Х11 – Если счётчик подменю больше 2
|
||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 150; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.202.48 (0.005 с.) |