доработал код теперь корректно отображается Вольтаж Добавил менюшку Датчик температуры думаю еще прикрутить к осциллографу внешний переключающийся делитель на сдвиговом регистре и программно менять предделитель на 5-20-200 и 1000 вольт пока только в планах думаю как реализовать нужно ведь еще и отображать на дисплее Инфу о том какой включен делитель и защиту какую нибудь на вход поставить хоть варистор что ли пока не придумал
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(LiteOUTPUT);
  
digitalWrite(buttonHIGH);
  
digitalWrite(1HIGH);
  
GLCD.Init(NON_INVERTED);  
  
GLCD.ClearScreen(); 
  
GLCD.SelectFont(Arial_14); 
  
GLCD.GotoXY(72);
  
GLCD.Puts("Oscilloscop V1.2");
  
GLCD.DrawRoundRect(4,0,115,185BLACK); 
  
delay(3000);
  
GLCD.ClearScreen();
}
//------------------------------------------------------------------
void menu(){

   
digitalRead(button);
   
   if(
== 0){Ls digitalRead(1);if(Ls == 0){GLCD.GotoXY(24);
   
GLCD.SelectFont(Arial_14);
   
GLCD.Puts("OFF");
   
delay(2000);
   
GLCD.ClearScreen();
   
digitalWrite(LiteLOW);}}
   if(
== 0){GLCD.ClearScreen();
   
delay(500); Lm++; }
   else{
   switch(
Lm){
//---------------------------------------------       
   
case 0:
   
GLCD.GotoXY(24);
   
GLCD.SelectFont(Arial_14);
   
GLCD.Puts("Menu:");
   break;
//---------------------------------------------     
   
case 1:
   
GLCD.GotoXY(24);GLCD.Puts("Menu:");
   
GLCD.GotoXY(216);
   
GLCD.SelectFont(Arial_14);
   
GLCD.Puts("Lite");
   
   
Ls digitalRead(1); 
   if(
Ls == 0){digitalWrite(LiteHIGH);GLCD.ClearScreen();
   
GLCD.GotoXY(216);
   
GLCD.SelectFont(Arial_14);
   
GLCD.Puts("Lite ON");
   
delay(1000);}
   
   
Ls digitalRead(1);
   if(
Ls == 0){GLCD.ClearScreen();
   
GLCD.GotoXY(24);GLCD.Puts("Menu:");
   
GLCD.GotoXY(216);
   
GLCD.SelectFont(Arial_14);
   
GLCD.Puts("Lite OFF");digitalWrite(LiteLOW);delay(1000);}
   break;
//---------------------------------------------  
   
case 2:
   
GLCD.GotoXY(24);GLCD.Puts("Menu:");
   
GLCD.GotoXY(216);
   
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(24);GLCD.Puts("Menu:");
  
GLCD.GotoXY(216);
   
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::crc8addr7) != 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 ( 09i++) {           // обрабатываем 9 байт
    
data[i] = ds.read();
   
  }
  
// высчитываем температуру :)
  
int HighByteLowByteTReadingTc_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;  128i++)     
  {     
   
MyBuff[i] = analogRead(5)/16;  
   } 
  
//GLCD.ClearScreen();
  
GLCD.FillRect(0,0,128,64WHITE);
int x;
float z;
int L;
  
analogRead(5)/20;
  
analogRead(5)/20.0;
  
= (z-x)*10;
 
GLCD.GotoXY(12);
 
GLCD.SelectFont(Arial_14);
 
GLCD.PrintNumber(x/10);
 
GLCD.Puts(".");
 
GLCD.PrintNumber(L);

 
GLCD.DrawLine(1,15,5,15BLACK);
 
GLCD.DrawLine(1,25,5,25BLACK);
 
GLCD.DrawLine(1,35,5,35BLACK);
 
GLCD.DrawLine(1,45,5,45BLACK);
 
GLCD.DrawLine(1,55,5,55BLACK);
 
//GLCD.DrawLine(10,1,10,5, BLACK);
 
GLCD.DrawLine(25,1,25,5BLACK);
 
GLCD.DrawLine(40,1,40,5BLACK);
 
GLCD.DrawLine(55,1,55,5BLACK);
 
GLCD.DrawLine(70,1,70,5BLACK);
 
GLCD.DrawLine(85,1,85,5BLACK);
 
GLCD.DrawLine(100,1,100,5BLACK);
 
GLCD.DrawLine(115,1,115,5BLACK); 
for (
i=0;  128i++)     
  {   
   
GLCD.DrawLine(i,64-MyBuff[i],i+1,64-MyBuff[i+1],BLACK);  
  } 
    
digitalRead(button);
   
   if(
== 0){delay(1000);}
  
Ls digitalRead(1);
  if(
Ls == 0){GLCD.ClearScreen();delay(1000);loop();}
  else{
oscilloscop();} 
}

//------------------------------------------------------------------
void  loop() 
{   
  
menu();
 

//------------------------------------------------------------------