PHP код:
#include <ks0108.h>
#include <OneWire.h>
byte MyBuff[128];
byte i ;
int V;
int button = 2;
int Lite = 3;
int B;
int Lm = 0;
int Ls = 0;
OneWire ds(12);
#include "Arial14.h"
//------------------------------------------------------------------
void setup()
{
pinMode(1,INPUT);
pinMode(button,INPUT);
pinMode(Lite, OUTPUT);
digitalWrite(button, HIGH);
digitalWrite(1, HIGH);
GLCD.Init(NON_INVERTED);
GLCD.ClearScreen();
GLCD.SelectFont(Arial_14);
GLCD.GotoXY(7, 2);
GLCD.Puts("Oscilloscop V1.2");
GLCD.DrawRoundRect(4,0,115,18, 5, BLACK);
delay(3000);
GLCD.ClearScreen();
}
//------------------------------------------------------------------
void menu(){
B = digitalRead(button);
if(B == 0){Ls = digitalRead(1);if(Ls == 0){GLCD.GotoXY(2, 4);
GLCD.SelectFont(Arial_14);
GLCD.Puts("OFF");
delay(2000);
GLCD.ClearScreen();
digitalWrite(Lite, LOW);}}
if(B == 0){GLCD.ClearScreen();
delay(500); Lm++; }
else{
switch(Lm){
//---------------------------------------------
case 0:
GLCD.GotoXY(2, 4);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Menu:");
break;
//---------------------------------------------
case 1:
GLCD.GotoXY(2, 4);GLCD.Puts("Menu:");
GLCD.GotoXY(2, 16);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Lite");
Ls = digitalRead(1);
if(Ls == 0){digitalWrite(Lite, HIGH);GLCD.ClearScreen();
GLCD.GotoXY(2, 16);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Lite ON");
delay(1000);}
Ls = digitalRead(1);
if(Ls == 0){GLCD.ClearScreen();
GLCD.GotoXY(2, 4);GLCD.Puts("Menu:");
GLCD.GotoXY(2, 16);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Lite OFF");digitalWrite(Lite, LOW);delay(1000);}
break;
//---------------------------------------------
case 2:
GLCD.GotoXY(2, 4);GLCD.Puts("Menu:");
GLCD.GotoXY(2, 16);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Oscilloscop");
Ls = digitalRead(1);
if(Ls == 0){delay(500);
oscilloscop();}
break;
//---------------------------------------------
//---------------------------------------------
case 4:
delay(100); Lm = 0;
GLCD.ClearScreen();
break;}}
if(Lm == 3){GLCD.ClearScreen();
GLCD.GotoXY(2, 4);GLCD.Puts("Menu:");
GLCD.GotoXY(2, 16);
GLCD.SelectFont(Arial_14);
GLCD.Puts("Temp:");
byte i;
byte present = 0;
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
ds.reset_search();
return;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
GLCD.Puts("Not Connect!");
return;
}
if ( addr[0] != 0x28) {
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // запускаем конвертацию
delay(10); // скорее всего достаточно 750ms
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // считываем ОЗУ датчика
for ( i = 0; i < 9; i++) { // обрабатываем 9 байт
data[i] = ds.read();
}
// высчитываем температуру :)
int HighByte, LowByte, TReading, Tc_100;
LowByte = data[0];
HighByte = data[1];
TReading = (HighByte << 8) + LowByte;
Tc_100 = TReading/2;
GLCD.PrintNumber(Tc_100/10);
GLCD.Puts(".");
int Celoe;
float Des;
int Drob;
Drob = Tc_100/10;
Des = Tc_100/10.0;
Celoe = (Des-Drob)*10;
GLCD.PrintNumber(Celoe);
delay(1000);}
}
//------------------------------------------------------------------
void oscilloscop(){
for (i=0; i < 128; i++)
{
MyBuff[i] = analogRead(5)/16;
}
//GLCD.ClearScreen();
GLCD.FillRect(0,0,128,64, WHITE);
int x;
float z;
int L;
x = analogRead(5)/20;
z = analogRead(5)/20.0;
L = (z-x)*10;
GLCD.GotoXY(1, 2);
GLCD.SelectFont(Arial_14);
GLCD.PrintNumber(x/10);
GLCD.Puts(".");
GLCD.PrintNumber(L);
GLCD.DrawLine(1,15,5,15, BLACK);
GLCD.DrawLine(1,25,5,25, BLACK);
GLCD.DrawLine(1,35,5,35, BLACK);
GLCD.DrawLine(1,45,5,45, BLACK);
GLCD.DrawLine(1,55,5,55, BLACK);
//GLCD.DrawLine(10,1,10,5, BLACK);
GLCD.DrawLine(25,1,25,5, BLACK);
GLCD.DrawLine(40,1,40,5, BLACK);
GLCD.DrawLine(55,1,55,5, BLACK);
GLCD.DrawLine(70,1,70,5, BLACK);
GLCD.DrawLine(85,1,85,5, BLACK);
GLCD.DrawLine(100,1,100,5, BLACK);
GLCD.DrawLine(115,1,115,5, BLACK);
for (i=0; i < 128; i++)
{
GLCD.DrawLine(i,64-MyBuff[i],i+1,64-MyBuff[i+1],BLACK);
}
B = digitalRead(button);
if(B == 0){delay(1000);}
Ls = digitalRead(1);
if(Ls == 0){GLCD.ClearScreen();delay(1000);loop();}
else{oscilloscop();}
}
//------------------------------------------------------------------
void loop()
{
menu();
}
//------------------------------------------------------------------