меню
Пультоскоп v.2 Осциллограф + генератор | ,
 

Пока я собрался с мыслями сделать новый портативный осциллограф, «Pultoscope» уже был на стадии разработки второй версии. Его автор, bodriy2014, адаптировал код для двух дисплеев: Nokia 3310 (китайский дисплей 5110) и цветного дисплея 240x320 SPFD5408. У меня в корпусе уже стоял дисплей от Nokia 3410, так что пришлось переделывать скетч под него. Общаясь с автором, и делая самостоятельные коррективы, получился результат, который привожу в этой статье.



Все составляющие легко поместились в имеющийся корпус.



Схема осциллографа «Pultoscope v.2» не сложная, проста в сборке. В отличии от стандартной сборки, я добавил в нее встроенный делитель 1:3, под который заточил программный код. При необходимости, можно добавить в нее дополнительные делители, усилители и т.д. Единственное, что хочу отметить, для портативной версии лучше собирать преобразователь питания на микросхеме типа MC34063, т.к. китайский DC-DC повышающий преобразователь показал себя не в лучшем виде. В частности, при разгоне arduino mini и замене кварца до 25Mhz, падала стабильность устройства, уходила нулевая линия отображения сигнала и проявлялись прочие проблемы, которые не наблюдались при включении от стабильного сетевого источника питания. По этим причинам я оставил свою версию прибора без замены кварца, хотя у автора установлен кварц с частотой 27Mhz.



Рассматривая дисплей «пультоскопа» в режиме работы осциллографа, можно выделить информативных 10 полей. 1 – шкала отображения вольтажа, имеет автоматические градации 0-1v, 0-5v, 0-15v, 0-3.3v (при опорном напряжении 1.1v). 2 – поле с сеткой, подстраиваемой под шкалу 1, на котором отображается график сигнала. 3 – максимальное напряжение просматриваемого сигнала. 4 – частота сигнала до 2MHz. Частота сигнала до 1.8 вольт измеряется программным способом, свыше – аппаратным (более точным). 5 – первый пункт меню, выбор опорного напряжения (5 или 1.1v). 6 – второй пункт меню, выбор развертки (0-8). 7 – третий пункт, масштаб (1:1, 2:1, 3:1). 8 – четвертый пункт, позиционирование (1-9). Позиционирование поднимает или опускает график сигнала. 9 – пятый пункт, режим паузы. 10 – шестой пункт, синхронизация.



В режиме генератора 3 информативных поля. 1 – отображение ШИМ в процентах; 2 – отображение генерируемой частоты; 3 – выбор множителя для изменения частоты или переключение изменения ШИМ.



Хочу отметить такой момент, что проект «Пультоскоп» не стоит на месте и планируется разработка новой (третьей) версии. В ней должен присутствовать внешний АЦП, возможно, встроенный ОУ и прочие необходимые доработки.


Файлы печатной платы осциллографа / генератора в формате *.lay6, скетч  - *.ino и необходимые библиотеки для работы с дисплеем от Nokia 3410 выкладываю отдельным архивом ЗДЕСЬ.

Поделиться:
 
Страницы:
sergeyaz | 26.11.2016 21:26

Щуп готовый использовали?
Каким волновым сопротивлением коаксиал?

Коментариев: 2  | saz(bсh)vernet.lv  | Зарегестрирован: 2016-11-23
admin | 27.11.2016 14:12

sergeyaz, щуп самодельный — швейная игла, кабель — часть AV коаксиального кабеля.

Коментариев: 1627  | Администратор сайта
Arthur1993 | 21.04.2018 22:00

https://youtu.be/5tGoBKO_CR8                     MC34063 вариант

Коментариев: 6  |   | Зарегестрирован:
admin | 22.04.2018 08:14

Arthur1993, устройство универсальное, каждый добавляет в него, что считает нужным для себя. Жаль, что автор пропал, у него были наработки по поводу увеличения скорости и точности осциллографического пробника.

Коментариев: 1627  | Администратор сайта
Arthur1993 | 22.04.2018 10:44

Я начинающий радиолюбитель , не принимаю какой пультоскоп можно собирать

Коментариев: 6  |   | Зарегестрирован:
admin | 22.04.2018 11:22

Arthur1993, определитесь какими функциями Вы будете пользоваться, и выберите нужную версию. Или пересоберите версию для себя.

Коментариев: 1627  | Администратор сайта
Arthur1993 | 22.04.2018 14:29

Этот версию АС напражнения работает?

Коментариев: 6  |   | Зарегестрирован:
admin | 22.04.2018 15:09

Да.

Коментариев: 1627  | Администратор сайта
arthur1993 | 21.05.2018 07:41

Когда будет третьей версия?

Коментариев: 5  |   | Зарегестрирован:
admin | 21.05.2018 08:09

Скорее всего, ее не будет. На данной комбинации «железа», большего сложно выжать.

Коментариев: 1627  | Администратор сайта
apeks1 | 01.07.2018 22:31

советую обратиь внимание на http://radioskot.ru/forum/12-14297-1   простой и достаточно мощный осцилограф получился 🙂

 

Коментариев: 6  | aleksey.nebiev(bсh)mail.ru  | Зарегестрирован: 2013-09-26
admin | 02.07.2018 07:35

apeks1, имеется видео с примером работы? Программный код открытый?

Коментариев: 1627  | Администратор сайта
Arthur_1993 | 30.10.2018 20:58

Где третьей версия на АЦП?

Коментариев: 1  |   | Зарегестрирован:
admin | 30.10.2018 21:02

Arthur_1993, основной код писал автор, который забросил этот проект. Моя работа заключалась в адаптации его под дисплей от Нокии 3410, который имеет большее разрешение. Если автор возобновит работу над проектом, возможно, я также выполню свою часть.

Коментариев: 1627  | Администратор сайта
arthur_1993 | 03.11.2018 13:44

Вы бы посоветовали собрать эту осциллографию?

Добавленно позже (в 13:46 03.11.2018):

/user_files/unverified__mj678d52/59753

Коментариев: 3  |   | Зарегестрирован:
admin | 03.11.2018 18:16

arthur_1993, какие характеристики заявлены?

 

Коментариев: 1627  | Администратор сайта
arthur_1993 | 03.11.2018 21:56
Коментариев: 3  |   | Зарегестрирован:
admin | 03.11.2018 22:48

Да, прибор достойный. Можно собирать.

Коментариев: 1627  | Администратор сайта
Arthur_1993 | 14.11.2018 14:26

Как я могу сделать прошивка этот пультоскоп , пожалуйста, напишите последовательность шагов?

Коментариев: 1  |   | Зарегестрирован:
admin | 16.11.2018 14:28

Arthur_1993, покупаете любой ttl программатор и через программу IDE arduino заливаете скомпилированный скетч в МК. Всё стандартно. Ознакомьтесь с принципом работы arduino и Вам станет всё ясно.

Коментариев: 1627  | Администратор сайта
tolya10 | 18.01.2019 12:48

Ваша версия пультоскопа информативней чем у автора. Но мне нужно к такому же дисплею и Вашей прошивке прикрутить DDS генератор и терминал, но тк с программированием дела не имел попытка скрестить вашу прошивку и авторскую не получаетс. В меню добавил нужные пункты, разделы скопировал в вашу прошивку, до стрелка не хочет выбирать дальше осцила и генератора, если в коде на DDS напишу Generator то соответственно DDS работает но нет генератора :(. Может глянете всетаки код ваш. Или подскажите как вы запустили прошивку автора на 3410. Пробовал подставить ваши исправленные драйвера от 3310 и скомпилировать прошивку автора не хочет. . Вот мой код
[SPOILER]//
//Страница проэкта http://srukami.inf.ua/pultoscop_v25110.html
//Переделка под дисплей от Nokia 3410 и оптимизация кода http://best-chart.ru
#include
#include
#include
#include
#include
#define led 9 //пин для генератора сигналов (не менять)
#define dds 10 //пин для генератора dds (не менять)
//#################№№№№№№####пользовательские настройки
#define levo 11 //кнопка ЛЕВО(можно любой пин)
#define ok 8 //кнопка ОК(можно любой пин)
#define pravo 12 //кнопка ПРАВО(можно любой пин)
#define akb A6 //любой свободный аналоговый пин для измерения напряжения АКБ
#define overclock 16 //Частота на которой работает Ардуино
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7);//пины к которым у вас подключен дисплей
byte cont=75;//контрастность дисплея
byte SinU=5; //уровень синхронизации 0 до 255
int PWM = 100;//стартовое значение ШИМ от 0 до 255
float fiveV = 5.13; //наши 5v, меряем мультиметром
int32_t frequency = 5000; //стартовое значение частоты в Гц
//###########################################################
float maxV = 0.0; // вычисление вольтажа
float printV = 0.0; // вывод вольтажа
float batt =0.00; // для вывода вольтажа батареи
int d=0;
byte menuDDS=0;
byte sinM[32]={1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
byte pilaM[32]={1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
byte RpilaM[32]={250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
byte trianglM[32]={1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};
byte hag=0;
int mnog=0;
boolean flag=0;
byte mass[256];
byte x=0;
byte menu=0;//переменная выбора меню
bool opornoe=1; //флаг опорного напряжения
bool paus=0; //флаг режима паузы
bool pultoskop=1; //флаг выбора генератора или осциллографа
byte razv=6;
byte sinhMASS=0;
long countX=0;
long speedTTL=9600; //скорость терминала
byte zoom=1; //Приближение по умолчанию 1:1
byte poz=8; //Позиционирование
int koef=1; //коэффициент для синхронизации
int newpoz=0;
unsigned long count =0;
void setup(){
display.begin();
display.setContrast(cont);
display.clearDisplay();
display.setCursor(5,20);
display.setTextColor(BLACK);
display.print(«Pultoscope v.»);
display.setCursor(82,13);
display.setTextSize(2);
display.print(«2»);
display.setTextSize(1);
display.setCursor(3,45);
display.println(utf8rus(«Версия для 3410»));
display.setCursor(10,55);
display.print(«best-chart.ru»);
batt=analogRead(akb)*fiveV/1024;
display.display();
delay(2000);

while(digitalRead(ok)==LOW){
display.clearDisplay();
display.setCursor(15,10);
display.println(utf8rus(«Осциллограф»));
display.setCursor(15,20);
display.println(utf8rus(«Генератор»));
display.setCursor(15,30);
display.println(utf8rus(«DDSгенератор»));
display.setCursor(15,40);
display.println(utf8rus(«Терминал»));
display.setCursor(5,55);
display.print(utf8rus(«Батарея «));
display.print(batt);
display.println(utf8rus(» в»));
if(pultoskop==1) display.setCursor(5,10);
if(pultoskop==0) display.setCursor(5,20);
if(pultoskop==2) display.setCursor(5,30);
if(pultoskop==3) display.setCursor(5,40);
display.print(«>»);
display.display();
if(digitalRead(levo)==HIGH){delay(200);pultoskop=pultoskop-1;}
if(digitalRead(pravo)==HIGH){delay(200);pultoskop=pultoskop+1;}
if(pultoskop>3){pultoskop=0;}
delay(50);
}
if(pultoskop==1){FreqCount.begin(1000);}
if(pultoskop==0){InitTimersSafe(); bool success = SetPinFrequencySafe(led, frequency);}
display.setTextColor(BLACK);
delay(500);
}
void Zamer(){
if (razv>=6){ADCSRA = 0b11100010;}//delitel 4
if (razv==5){ADCSRA = 0b11100011;}//delitel 8
if (razv==4){ADCSRA = 0b11100100;}//delitel 16
if (razv==3){ADCSRA = 0b11100101;}//delitel 32
if (razv==2){ADCSRA = 0b11100110;}//delitel 64
if (razv<2){ADCSRA = 0b11100111;}//delitel 128
if (razv==0){
for(byte i=0;i0){
for(byte i=0;i<255;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
}
}

}
void loop() {
if(pultoskop==1){
String text="";
byte test;
if(opornoe==0){ADMUX = 0b11100100;}//выбор внутреннего опорного 1,1В
if(opornoe==1){ADMUX = 0b01100100;}//Выбор внешнего опорного
delay(5);
if(paus==0){Zamer();}
//#######################################определение точки синхронизации

maxV = 0;
for(int y=1;y<85;y++){
if(maxV=85) koef=1;
else {
if(maxV>=17) koef=3;
else koef=15;
}
}

bool flagSINHRO=0;
bool flagSINHRnull=0;
for(int y=1;y<255;y++){
if(flagSINHRO==0){if(mass[y]*koefSinU){flagSINHRO=1;sinhMASS=y;}}
}
}
//if(flagSINHRO==0){if(mass[y]SinU){flagSINHRO=1;sinhMASS=y;}}

//#######################################отрисовка графика

x=10;
if (zoom==2) x=5;
if (zoom==3) x=3;

if(poz==9) newpoz=-14;
if(poz==8) newpoz=0;
if(poz==7) newpoz=7;
if(poz==6) newpoz=14;
if(poz==5) newpoz=21;
if(poz==4) newpoz=28;
if(poz==3) newpoz=35;
if(poz==2) newpoz=42;
if(poz==1) newpoz=49;

display.clearDisplay();
display.fillCircle(91,45-SinU/5.8, 2, BLACK);//рисуем уровень синхронизации
//for(int y=1;y<85;y++){
for(int y=sinhMASS;y<sinhMASS+85;y++){
if(razv<7){x++;}
if(razv==7){x=x+2;}
if(razv==8){x=x+3;}
if(x<=95) {
display.drawLine(x*zoom, (46+newpoz)-(mass[y]/5.6*koef)*zoom, (x+1)*zoom, (46+newpoz)-(mass[y+1]/5.6*koef)*zoom, BLACK);
}
}
sinhMASS=0;
//#######################################отрисовка графика
for(int i=0; i<=45; i+=5) {
display.drawPixel(24,i, BLACK);
display.drawPixel(49,i, BLACK);
display.drawPixel(74,i, BLACK);

}//разметка экрана вертикальная
if(opornoe==0) {
for(int i=9; i=0;i=i-9){display.drawFastHLine(0,i,9, BLACK);}
for(int i=9; i<95; i+=5) {
display.drawPixel(i,18, BLACK);
display.drawPixel(i,36, BLACK);
}
display.drawChar (0, 14, '9', 1, 0, 1);
display.drawChar (0, 33, '3', 1, 0, 1);
if(maxV<85) {
display.drawChar (0, 14, '3', 1, 0, 1);
display.drawChar (0, 33, '1', 1, 0, 1);
}
if(maxV=25){SinU=SinU-20;}}
if(digitalRead(pravo)==HIGH){if(SinU<=225){SinU=SinU+20;}}
display.fillCircle(91,45-SinU/5.8, 3, BLACK);
display.fillCircle(91,45-SinU/5.8, 2, WHITE);
}
if(digitalRead(ok)==HIGH){menu++;if(menu==6){menu=0;paus=0;}}//перебор меню
if (FreqCount.available()) {count = FreqCount.read();}//вывод частоты по готовности счетчика
countX=count*(overclock/16.0);
if(countX==0) {
//#######################################частоты сигнала
byte Frec1=0;
int Frec=0;
bool flagFrec1=0;
bool flagFrec2=0;
bool flagFrec3=0;
for(int y=1;y<255;y++){
if(flagFrec1==0){if(mass[y]*koefSinU){flagFrec1=1;Frec1=y;}}}
if(flagFrec1==1){if(mass[y]*koefSinU){
if (razv>=6){Frec=1000000/((y-Frec1-1)*3.27);}//delitel 4
if (razv==5){Frec=1000000/((y-Frec1)*3.27)/2;}//delitel 8
if (razv==4){Frec=1000000/((y-Frec1)*3.27)/4;}//delitel 16
if (razv==3){Frec=1000000/((y-Frec1)*3.27)/8;}//delitel 32
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/16;}//delitel 64
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==1){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==0){Frec=1000000/((y-Frec1)*500);}//delitel 128
flagFrec1=0;flagFrec3=0;}}}
//#######################################частоты сигнала
countX=Frec*(overclock/16.0);
}

if(opornoe==0) text=»1″;
if(opornoe==1) text=»5″;

text=text+utf8rus(» Р:»)+razv+utf8rus(» «)+zoom+utf8rus(«:1″)+utf8rus(» П:»)+poz;

display.setCursor(2, 48);
display.print(text);

if(opornoe==1) printV=maxV*fiveV/255*3,2; //if(opornoe==1) printV=maxV*fiveV/255*3,2;
if(opornoe==0) printV=maxV*1.10/255*3,2; // напряжение на делителе 1.1в

display.setCursor(1, 58);
display.print(printV);display.print(«v «);
display.print(countX);display.print(«Hz»);
display.fillRect(85, 48, 2, 7, 1);
display.fillRect(88, 48, 2, 7, 1);
//display.setCursor(55, 0); display.print(maxV); //градации напряжения
//#######################################отрисовка menu

display.display();
delay(300);
}
if(pultoskop==0){Generator();}
if(pultoskop==2){DDSGenerator();}
if(pultoskop==3){TTL();}
}
//#######################################режим ренератора
void Generator(){
display.clearDisplay();
if (flag==0){//флаг выборов режима настройки ШИМ или Частоты
if(digitalRead(levo)==HIGH){
frequency=frequency-mnog;
if(frequency<0){frequency=0;}
bool success = SetPinFrequencySafe(led, frequency);
delay(3);//защита от дребезга
}
if(digitalRead(pravo)==HIGH){
frequency=frequency+mnog;
bool success = SetPinFrequencySafe(led, frequency);
delay(3);//защита от дребезга
}
}
if (flag==1){//флаг выборов режима настройки ШИМ или Частоты
if(digitalRead(levo)==HIGH){
PWM=PWM-3;
if(PWM255){PWM=0;}
delay(3);//защита от дребезга
}
}
if(digitalRead(ok)==HIGH){//переключение разряда выбора частоты
delay(3);//защита от дребезга
hag++;
if(hag>=5){hag=0;}
}
////////////
display.setTextSize(1);
display.setCursor(20,15);
display.print(«PWM = «);
display.print(PWM*100/255);
display.print(«%»);
display.drawRect(2,2,92,10, BLACK);
display.fillRect(2,2,92*PWM/255.0,10, BLACK);

///////////
display.setCursor(5,30);
display.setTextSize(2);
long frequencyX=frequency*(overclock/16.0);
if(frequencyX=1000){if(frequencyX=10000){if(frequencyX=100000){display.print((frequencyX/1000.0),2);display.setTextSize(1);display.println(«KHz»);}
display.setCursor(15,55);
display.setTextSize(1);
display.print(«>> X «);
if(hag==0){//выбор множителя частоты

display.print(1*(overclock/16.0),1);
mnog=1;
flag=0;
}
if(hag==1){//выбор множителя частоты
display.print(10*(overclock/16.0),0);
mnog=10;
}
if(hag==2){//выбор множителя частоты
display.print(100*(overclock/16.0),0);
mnog=100;
}
if(hag==3){//выбор множителя частоты
display.print(1000*(overclock/16.0),0);
mnog=1000;
}
if(hag==4){//выбор PWM
display.print(utf8rus(«ШИМ»));
flag=1;
}
display.print(» <<");
pwmWrite(led, PWM);
display.display();
delay(300);
}
/////////////////////DDS
void DDSGenerator(){
int fr=10;
if(menuDDS==0){
display.clearDisplay();
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.setCursor(10,0);
display.println(utf8rus("Синус"));
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(utf8rus("Треугольник"));
display.setCursor(10,20);
display.println(utf8rus("Пила"));
display.setCursor(10,30);
display.println(utf8rus("Пила Обр"));
display.setTextColor(BLACK);
display.setCursor(0,40);
//display.print(utf8rus("Частота="));
//display.print(57);
//display.print(utf8rus("Гц"));
delay(100);
display.display();
while(D11_Read==LOW){
PWM=sinM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==1){
display.clearDisplay();
display.setTextColor(BLACK); // 'inverted' text
display.setCursor(10,0);
display.println(utf8rus("Синус"));
display.setTextColor(WHITE, BLACK);
display.setCursor(10,10);
display.println(utf8rus("Треугольник"));
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println(utf8rus("Пила"));
display.setCursor(10,30);
display.println(utf8rus("Пила Обр"));
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(utf8rus("Частота="));
// display.print(57);
//display.print(utf8rus("Гц"));
delay(100);
display.display();
while(D11_Read==LOW){
PWM=trianglM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==2){
display.clearDisplay();
display.setTextColor(BLACK); // 'inverted' text
display.setCursor(10,0);
display.println(utf8rus("Синус"));
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(utf8rus("Треугольник"));
display.setTextColor(WHITE, BLACK);
display.setCursor(10,20);
display.println(utf8rus("Пила"));
display.setTextColor(BLACK);
display.setCursor(10,30);
display.println(utf8rus("Пила Обр"));
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(utf8rus("Частота="));
// display.print(57);
//display.print(utf8rus("Гц"));
delay(100);
display.display();
while(D11_Read==LOW){
PWM=pilaM[d];
pwmWrite(dds,PWM);
// delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==3){
display.clearDisplay();
display.setTextColor(BLACK); // 'inverted' text
display.setCursor(10,0);
display.println(utf8rus("Синус"));
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(utf8rus("Треугольник"));
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println(utf8rus("Пила"));
display.setTextColor(WHITE, BLACK);
display.setCursor(10,30);
display.println(utf8rus("Пила Обр"));
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(utf8rus("Частота="));
// display.print(57);
// display.print(utf8rus("Гц"));
delay(100);
display.display();
while(D11_Read==LOW){
PWM=RpilaM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==4){menuDDS=0;}

}
/////////////////////TTL
void TTL(){
display.clearDisplay();
display.setTextColor(BLACK);
display.setCursor(10,0);
display.println(utf8rus("Терминал"));
display.setCursor(10,10);
display.println(utf8rus("Скорость"));
display.setCursor(10,20);
display.print("-");
display.print(speedTTL);
display.println("+");
display.setCursor(0,30);
display.println(utf8rus("Нажми ОК-старт"));
if(digitalRead(pravo)==HIGH){speedTTL=speedTTL+100;}
if(digitalRead(levo)==HIGH){speedTTL=speedTTL-100;}
if(speedTTL250000){speedTTL=0;}
if(digitalRead(ok)==HIGH){Serial.begin(speedTTL*(16/overclock));
display.clearDisplay();
delay(100);
display.display();
int x=0;
int y=0;
while(1){
char incomingBytes;
if (Serial.available() > 0) { // Если в буфере есть данные
incomingBytes=Serial.read(); // Считывание байта в переменную incomeByte
display.setCursor(x,y);
display.print(incomingBytes); // Печать строки в буффер дисплея
display.display(); x=x+6;
if(x==84){x=0;y=y+8;}
if(y==48){x=0;y=0;
display.clearDisplay();
delay(100);
display.display();}}
}}
delay(100);
display.display();
}

[/SPOILER]

Добавленно позже (в 12:50 18.01.2019):

а что под спойлер не прячет?

Коментариев: 1  | tolya10(bсh)mksat.net  | Зарегестрирован: 2019-01-18
Страницы:
Необходимо авторизоваться, чтобы комментировать.