Помощь в компиляции
- Войдите на сайт для отправки комментариев
Сб, 23/03/2019 - 16:42
Здравствуйте,помогите в скетче ошибка 'led' was not declared in this scope
[code]
//Страница проэкта http://srukami.inf.ua/pultoscop_v25110.html
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <FreqCount.h>
#include <PWM.h>
#include <CyberLib.h>#define led 9 //пин для генератора сигналов (не менять)
#define dds 10 //пин для генератора dds (не менять)
//#################№№№№№№####пользовательские настройки
#define power 8 //пин который опрашивает кнопку включения
#define OFF 14//пин который управляет ключем питания
#define timepowerON 50 //время удержания кнопки выключения
#define levo 13 //кнопка ЛЕВО(можно любой пин)
#define ok 12 //кнопка ОК(можно любой пин)
#define pravo 11 //кнопка ПРАВО(можно любой пин)
#define akb A5 //любой своюодный аналоговый пин для измерения напряжения АКБ
#define overclock 16 //Частота на которой работает Ардуино
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2);//пины к которым у вас подключен дисплей
byte cont=52;//контрастность дисплея
byte SinU=30; //уровень синхронизации 0 до 255
int PWM = 128;//стартовое значение ШИМ от 0 до 255
int32_t frequency = 500; //стартовое значение частоты в Гц
float VCC=5.0; //напряжение питания, меряем мультиметром
//###########################################################
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};
int powerON=0;//состояние кнопки питания
byte hag=0;
int mnog=0;
boolean flag=0;
byte mass[701];
byte x=0;
byte menu=0;//переменная выбора меню
bool opornoe=1; //флаг опорного напряжения
bool paus=0; //флаг режима паузы
byte pultoskop=0; //флаг выбора генератора или осциллографа
byte razv=6;
unsigned long count =0;
byte sinX=30;
byte meaX=83;
int Vmax=0;// максимальное напряжение
byte sinhMASS=0;
long countX=0;
long speedTTL=9600; //скорость терминала
int prokr=0;
void setup(){
pinMode(A4,INPUT);
digitalWrite(OFF,HIGH);//включем питание
//Serial.begin(9600);
display.begin();
display.setContrast(cont);
while(digitalRead(ok)==LOW){
/////////////////////////////////////////удержание кнопки отключения
if(digitalRead(power)==HIGH){powerON++;delay(10);}
if(powerON>=timepowerON){digitalWrite(OFF,LOW);}///отключаем питание
/////////////////////////////////////////удержание кнопки отключения
if(pultoskop==0){
display.clearDisplay();
display.setCursor(10,0);
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.println("Пультоскоп");
display.setCursor(10,10);
display.setTextColor(BLACK);
display.println("Генератор");
display.setCursor(10,20);
display.println("DDSгенератор");
display.setCursor(10,30);
display.println("Терминал");
display.setCursor(0,40);
display.print("Батарея=");
display.print(analogRead(akb)*5.0/1024);
display.print("В");
}
if(pultoskop==1){
display.clearDisplay();
display.setCursor(10,0);
display.setTextColor(BLACK); // 'inverted' text
display.println("Пультоскоп");
display.setCursor(10,10);
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.println("Генератор");
display.setTextColor(BLACK); // 'inverted' text;
display.setCursor(10,20);
display.println("DDSгенератор");
display.setCursor(10,30);
display.println("Терминал");
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print("Батарея=");
display.print(analogRead(akb)*5.0/1024);
display.print("В");
}
if(pultoskop==2){
display.clearDisplay();
display.setCursor(10,00);
display.setTextColor(BLACK); // 'inverted' text
display.println("Пультоскоп");
display.setCursor(10,10);
display.println("Генератор");
display.setTextColor(WHITE, BLACK); // 'inverted' text;
display.setCursor(10,20);
display.println("DDSгенератор");
display.setTextColor(BLACK);
display.setCursor(10,30);
display.println("Терминал");
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print("Батарея=");
display.print(analogRead(akb)*5.0/1024);
display.print("В");
}
if(pultoskop==3){
display.clearDisplay();
display.setCursor(10,00);
display.setTextColor(BLACK); // 'inverted' text
display.println("Пультоскоп");
display.setCursor(10,10);
display.println("Генератор");
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println("DDSгенератор");
display.setTextColor(WHITE, BLACK);
display.setCursor(10,30);
display.println("Терминал");
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print("Батарея=");
display.print(analogRead(akb)*5.0/1024);
display.print("В");
}
if(digitalRead(levo)==HIGH){delay(300);pultoskop=pultoskop+1;}
if(digitalRead(pravo)==HIGH){delay(300);pultoskop=pultoskop+1;}
if(pultoskop>3){pultoskop=0;}
delay(50);
display.display(); }
if(pultoskop==2){InitTimersSafe(); bool success = SetPinFrequencySafe(led,200000);}
if(pultoskop==0){FreqCount.begin(1000);}
if(pultoskop==1){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(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
delayMicroseconds(500);
mass[i]=ADCH;
}
}
if (razv>0){
for(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
}
}
}
void loop() {
/////////////////////////////////////////удержание кнопки отключения
if(digitalRead(power)==HIGH){powerON++;delay(10);}
if(powerON>=timepowerON){digitalWrite(OFF,LOW);}///отключаем питание
/////////////////////////////////////////удержание кнопки отключения
if(pultoskop==0){
if(opornoe==0){ADMUX = 0b11100011;}//выбор внутреннего опорного 1,1В
if(opornoe==1){ADMUX = 0b01100011;}//Выбор внешнего опорного
delay(5);
if(paus==0){Zamer();}
//#######################################определение точки синхронизации
bool flagSINHRO=0;
bool flagSINHRnull=0;
for(int y=1;y<255;y++){
if(flagSINHRO==0){if(mass[y]<SinU){flagSINHRnull=1;}}
if(flagSINHRO==0){if(flagSINHRnull==1){if(mass[y]>SinU){flagSINHRO=1;sinhMASS=y;}}}}
//#######################################определение точки синхронизации
//максимальное значение сигнала##########################
Vmax=0;
for(int y=1;y<255;y++){if(Vmax<mass[y]){Vmax=mass[y];} }
//максимальное значение сигнала##########################
//#######################################определение точки синхронизации
//#######################################отрисовка графика
if(paus==0){
display.clearDisplay();
display.fillCircle(80,47-SinU/7, 2, BLACK);//рисуем уровень синхронизации
x=3;
for(int y=sinhMASS;y<sinhMASS+80;y++){
if(razv<7){x++;}
if(razv==7){x=x+2;}
if(razv==8){x=x+3;}
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
}
sinhMASS=0;}
if(paus==1){
display.clearDisplay();
display.drawLine(prokr/8,8,prokr/8+6,8, BLACK);//шкала прокрутки
display.drawLine(prokr/8,9,prokr/8+6,9, BLACK);//шкала прокрутки
x=3;
for(int y=prokr;y<prokr+80;y++){
if(razv<7){x++;}
if(razv==7){x=x+2;}
if(razv==8){x=x+3;}
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
}}
//#######################################отрисовка графика
for(byte i=47;i>5;i=i-7){display.drawPixel(0,i, BLACK);display.drawPixel(1,i, BLACK);display.drawPixel(2,i, BLACK);}//разметка экрана вертикальная
//////////////////////////////////////////////////сетка
for(byte i=47;i>5;i=i-3){display.drawPixel(21,i, BLACK);display.drawPixel(42,i, BLACK);display.drawPixel(63,i, BLACK);}
for(byte i=3;i<84;i=i+3){display.drawPixel(i,33, BLACK);display.drawPixel(i,19, BLACK);}
//////////////////////////////////////////////////сетка
//#######################################отрисовка menu
if(menu==0){
display.setCursor(0,0);
display.setTextColor(WHITE,BLACK);
if(opornoe==0){display.print("1.1");}
if(opornoe==1){display.print(VCC,1);}
display.setTextColor(BLACK);
display.print(" ");
display.print(razv);
display.print(" P");
if(digitalRead(levo)==HIGH){opornoe=!opornoe;}
if(digitalRead(pravo)==HIGH){opornoe=!opornoe;}
}
if(menu==1){
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print("1.1");}
if(opornoe==1){display.print(VCC,1);}
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.print(" ");
display.print(razv);
display.setTextColor( BLACK); // 'inverted' text
display.print(" P");
if(digitalRead(levo)==HIGH){razv=razv-1;if(razv==255){razv=0;}}
if(digitalRead(pravo)==HIGH){razv=razv+1;if(razv==9){razv=8;}}
}
if(menu==2){
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print("1.1");}
if(opornoe==1){display.print(VCC,1);}
display.print(" ");
display.print(razv);
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.print(" P");
paus=1;
if(digitalRead(levo)==HIGH){prokr=prokr-10;if(prokr<0){prokr=0;}}
if(digitalRead(pravo)==HIGH){prokr=prokr+10;if(prokr>620){prokr=620;}}
}
if(menu==3){
prokr=0;
paus=0;
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print("1.1");}
if(opornoe==1){display.print(VCC,1);}
display.print(" ");
display.print(razv);
display.setTextColor(BLACK);
display.print(" P");
if(digitalRead(levo)==HIGH){SinU=SinU-20;if(SinU<20){SinU=20;}}
if(digitalRead(pravo)==HIGH){SinU=SinU+20;if(SinU>230){SinU=230;}}
display.fillCircle(80,47-SinU/7, 5, BLACK);
display.fillCircle(80,47-SinU/7, 2, WHITE);
}
if(digitalRead(ok)==HIGH){menu++;if(menu==4){menu=0;paus=0;}}//перебор меню
if (FreqCount.available()) { count = FreqCount.read();}//вывод частоты по готовности счетчика
//#######################################частоты сигнала
byte Frec1=0;
long Frec=0;
bool flagFrec1=0;
bool flagFrec2=0;
bool flagFrec3=0;
for(int y=1;y<255;y++){
if(flagFrec1==0){if(mass[y]<SinU){flagFrec2=1;}}
if(flagFrec1==0){if(flagFrec2==1){if(mass[y]>SinU){flagFrec1=1;Frec1=y;}}}
if(flagFrec1==1){if(mass[y]<SinU){flagFrec3=1;}}
if(flagFrec3==1){if(mass[y]>SinU){
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;}}}
//#######################################частоты сигнала
display.setTextColor( BLACK);
if(opornoe==1){
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);}
if((Vmax*VCC/255)<2.5){countX=Frec*(overclock/16.0);}}
if(opornoe==0){countX=Frec*(overclock/16.0);}
if(countX<1000){display.print(" ");display.print(countX);display.print("Hz");}
if(countX>1000){float countXK=countX/1000.0;display.print(countXK,1);display.print("KHz");}
if(opornoe==1){display.setCursor(0,40);display.setTextColor(BLACK);
display.print(Vmax*VCC/255,1);}
if(opornoe==0){display.setCursor(0,40);display.setTextColor(BLACK);
display.print(Vmax*1.1/255,1);}
display.print("V");
//#######################################отрисовка menu
delay(200);
display.display();
}
if(pultoskop==1){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-1;
if(PWM<0){PWM=255;}
delay(3);//защита от дребезга
}
if(digitalRead(pravo)==HIGH){
PWM=PWM+1;
if(PWM>255){PWM=0;}
delay(3);//защита от дребезга
}
}
if(digitalRead(ok)==HIGH){//переключение разряда выбора частоты
delay(3);//защита от дребезга
hag++;
if(hag>=5){hag=0;}
}
////////////
display.setTextSize(1);
display.setCursor(0,5);
display.print("PWM=");
display.print(PWM*100.0/255);
display.print(" %");
display.drawLine(0,0,83*PWM/255.0,0, BLACK);
display.drawLine(0,1,83*PWM/255.0,1, BLACK);
display.drawLine(0,2,83*PWM/255.0,2, BLACK);
display.drawLine(0,15,83*PWM/255.0,15, BLACK);
display.drawLine(0,16,83*PWM/255.0,16, BLACK);
display.drawLine(0,17,83*PWM/255.0,17, BLACK);
///////////
display.setCursor(5,20);
display.setTextSize(2);
long frequencyX=frequency*(overclock/16.0);
if(frequencyX<1000){display.print(frequencyX);display.setTextSize(1);display.println("Hz");}
if(frequencyX>1000){if(frequencyX<10000){display.print((frequencyX/1000.0),2);display.setTextSize(1);display.println("KHz");}}
if(frequencyX>=10000){if(frequencyX<100000){display.print((frequencyX/1000.0),1);display.setTextSize(1);display.println("KHz");}}
if(frequencyX>=100000){display.print((frequencyX/1000.0),0);display.setTextSize(1);display.println("KHz");}
display.setCursor(0,40);
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("PWM ");
display.print(PWM*100.0/255);
display.print("%");
flag=1;
}
display.print("<<");
pwmWrite(led, PWM);
delay(300);
display.display();
}
/////////////////////DDS
void DDSGenerator(){
int fr=10;
if(menuDDS==0){
display.clearDisplay();
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.setCursor(10,0);
display.println("Синус");
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println("Треугольник");
display.setCursor(10,20);
display.println("Пила");
display.setCursor(10,30);
display.println("Пила Обр");
display.setTextColor(BLACK);
display.setCursor(0,40);
//display.print("Частота=");
//display.print(57);
//display.print("Гц");
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("Синус");
display.setTextColor(WHITE, BLACK);
display.setCursor(10,10);
display.println("Треугольник");
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println("Пила");
display.setCursor(10,30);
display.println("Пила Обр");
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print("Частота=");
// display.print(57);
//display.print("Гц");
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("Синус");
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println("Треугольник");
display.setTextColor(WHITE, BLACK);
display.setCursor(10,20);
display.println("Пила");
display.setTextColor(BLACK);
display.setCursor(10,30);
display.println("Пила Обр");
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print("Частота=");
// display.print(57);
//display.print("Гц");
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("Синус");
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println("Треугольник");
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println("Пила");
display.setTextColor(WHITE, BLACK);
display.setCursor(10,30);
display.println("Пила Обр");
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print("Частота=");
// display.print(57);
// display.print("Гц");
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;}
}
/////////////////////DDS
/////////////////////TTL
void TTL(){
display.clearDisplay();
display.setTextColor(BLACK);
display.setCursor(10,0);
display.println("Терминал");
display.setCursor(10,10);
display.println("Скорость");
display.setCursor(10,20);
display.print("-");
display.print(speedTTL);
display.println("+");
display.setCursor(0,30);
display.println("Нажми ОК-старт");
if(digitalRead(pravo)==HIGH){speedTTL=speedTTL+100;}
if(digitalRead(levo)==HIGH){speedTTL=speedTTL-100;}
if(speedTTL<0){speedTTL=250000;}
if(speedTTL>250000){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();
}
/////////////////////TTL
[/code]
Может кто подправит экспорт бинарного файла
Не обьявлен led в ХЗ какой строке
Не обьявлен led в ХЗ какой строке
Но при этом испольуется в строках №№ ХЗ. ХЗ, ХЗ и ещё в строке №ХЗ
Думаете он поймет что такое "строка ХЗ" и почему она ХЗ ?
Ну, если не поймёт, значит "не судьба" :(
помоги,пожалуйста разобраться,проект повторен тысячи раз и никто не жаловался,а все выложенные Hexы я перепробывал заливать, они старой версии,вот я и решил перевести в HEX единственный INO файл,но делаю впервые,с библиотеками разобрался,а тут эта ошибка,сам осцилографик неплохой,для простого незамысловатого использования вот сдесь строка ошибки https://ibb.co/s2B4VdB а вот ссылка проекта http://srukami.inf.ua/pultoscop_v25110.html
Вы и впрямь не поняли, почему Вам все говорят про ошибки в строке № ХЗ?
Если не поняли, то, боюсь, что Вам лучше бросить это дело.
Я, например, вижу Вашу ошибку, на как прикажете сказать где она? Пальцем с начала скетча номер строки считать? Так мне влом! Или как?
Уважаемый ТС, прочитайте вот это и сделайте правильно. И Вам помогут!
А что такое X3 это матерноое слово сокращенно или 3 с иксом строка и как исправить ошибку что-то дописать?
А что такое X3 это матерноое слово сокращенно или 3 с иксом
https://ru.wiktionary.org/wiki/%D1%85%D0%B7
001
[code]
002
//Страница проэкта <a href="http://srukami.inf.ua/pultoscop_v25110.html" title="http://srukami.inf.ua/pultoscop_v25110.html" rel="nofollow">http://srukami.inf.ua/pultoscop_v25110.html</a>
003
#include <Adafruit_GFX.h>
004
#include <Adafruit_PCD8544.h>
005
#include <FreqCount.h>
006
#include <PWM.h>
007
#include <CyberLib.h>#define led 9 //пин для генератора сигналов (не менять)
008
#define dds 10 //пин для генератора dds (не менять)
009
//#################№№№№№№####пользовательские настройки
010
#define power 8 //пин который опрашивает кнопку включения
011
#define OFF 14//пин который управляет ключем питания
012
#define timepowerON 50 //время удержания кнопки выключения
013
#define levo 13 //кнопка ЛЕВО(можно любой пин)
014
#define ok 12 //кнопка ОК(можно любой пин)
015
#define pravo 11 //кнопка ПРАВО(можно любой пин)
016
#define akb A5 //любой своюодный аналоговый пин для измерения напряжения АКБ
017
#define overclock 16 //Частота на которой работает Ардуино
018
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2);
//пины к которым у вас подключен дисплей
019
byte
cont=52;
//контрастность дисплея
020
byte
SinU=30;
//уровень синхронизации 0 до 255
021
int
PWM = 128;
//стартовое значение ШИМ от 0 до 255
022
int32_t frequency = 500;
//стартовое значение частоты в Гц
023
float
VCC=5.0;
//напряжение питания, меряем мультиметром
024
//###########################################################
025
int
d=0;
026
byte
menuDDS=0;
027
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};
028
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};
029
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};
030
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};
031
int
powerON=0;
//состояние кнопки питания
032
byte
hag=0;
033
int
mnog=0;
034
boolean flag=0;
035
byte
mass[701];
036
byte
x=0;
037
byte
menu=0;
//переменная выбора меню
038
bool
opornoe=1;
//флаг опорного напряжения
039
bool
paus=0;
//флаг режима паузы
040
byte
pultoskop=0;
//флаг выбора генератора или осциллографа
041
byte
razv=6;
042
unsigned
long
count =0;
043
byte
sinX=30;
044
byte
meaX=83;
045
int
Vmax=0;
// максимальное напряжение
046
byte
sinhMASS=0;
047
long
countX=0;
048
long
speedTTL=9600;
//скорость терминала
049
int
prokr=0;
050
void
setup
(){
051
pinMode(A4,INPUT);
052
digitalWrite(OFF,HIGH);
//включем питание
053
//Serial.begin(9600);
054
display.begin();
055
display.setContrast(cont);
056
while
(digitalRead(ok)==LOW){
057
/////////////////////////////////////////удержание кнопки отключения
058
if
(digitalRead(power)==HIGH){powerON++;delay(10);}
059
if
(powerON>=timepowerON){digitalWrite(OFF,LOW);}
///отключаем питание
060
/////////////////////////////////////////удержание кнопки отключения
061
if
(pultoskop==0){
062
display.clearDisplay();
063
display.setCursor(10,0);
064
display.setTextColor(WHITE, BLACK);
// 'inverted' text
065
display.println(
"Пультоскоп"
);
066
display.setCursor(10,10);
067
display.setTextColor(BLACK);
068
display.println(
"Генератор"
);
069
display.setCursor(10,20);
070
display.println(
"DDSгенератор"
);
071
display.setCursor(10,30);
072
display.println(
"Терминал"
);
073
display.setCursor(0,40);
074
display.print(
"Батарея="
);
075
display.print(analogRead(akb)*5.0/1024);
076
display.print(
"В"
);
077
}
078
if
(pultoskop==1){
079
display.clearDisplay();
080
display.setCursor(10,0);
081
display.setTextColor(BLACK);
// 'inverted' text
082
display.println(
"Пультоскоп"
);
083
display.setCursor(10,10);
084
display.setTextColor(WHITE, BLACK);
// 'inverted' text
085
display.println(
"Генератор"
);
086
display.setTextColor(BLACK);
// 'inverted' text;
087
display.setCursor(10,20);
088
display.println(
"DDSгенератор"
);
089
display.setCursor(10,30);
090
display.println(
"Терминал"
);
091
display.setCursor(0,40);
092
display.setTextColor(BLACK);
093
display.print(
"Батарея="
);
094
display.print(analogRead(akb)*5.0/1024);
095
display.print(
"В"
);
096
}
097
if
(pultoskop==2){
098
display.clearDisplay();
099
display.setCursor(10,00);
100
display.setTextColor(BLACK);
// 'inverted' text
101
display.println(
"Пультоскоп"
);
102
display.setCursor(10,10);
103
display.println(
"Генератор"
);
104
display.setTextColor(WHITE, BLACK);
// 'inverted' text;
105
display.setCursor(10,20);
106
display.println(
"DDSгенератор"
);
107
display.setTextColor(BLACK);
108
display.setCursor(10,30);
109
display.println(
"Терминал"
);
110
display.setCursor(0,40);
111
display.setTextColor(BLACK);
112
display.print(
"Батарея="
);
113
display.print(analogRead(akb)*5.0/1024);
114
display.print(
"В"
);
115
}
116
if
(pultoskop==3){
117
display.clearDisplay();
118
display.setCursor(10,00);
119
display.setTextColor(BLACK);
// 'inverted' text
120
display.println(
"Пультоскоп"
);
121
display.setCursor(10,10);
122
display.println(
"Генератор"
);
123
display.setTextColor(BLACK);
124
display.setCursor(10,20);
125
display.println(
"DDSгенератор"
);
126
display.setTextColor(WHITE, BLACK);
127
display.setCursor(10,30);
128
display.println(
"Терминал"
);
129
display.setCursor(0,40);
130
display.setTextColor(BLACK);
131
display.print(
"Батарея="
);
132
display.print(analogRead(akb)*5.0/1024);
133
display.print(
"В"
);
134
}
135
if
(digitalRead(levo)==HIGH){delay(300);pultoskop=pultoskop+1;}
136
if
(digitalRead(pravo)==HIGH){delay(300);pultoskop=pultoskop+1;}
137
if
(pultoskop>3){pultoskop=0;}
138
delay(50);
139
display.display(); }
140
if
(pultoskop==2){InitTimersSafe();
bool
success = SetPinFrequencySafe(led,200000);}
141
if
(pultoskop==0){FreqCount.begin(1000);}
142
if
(pultoskop==1){InitTimersSafe();
bool
success = SetPinFrequencySafe(led, frequency);}
143
display.setTextColor(BLACK);
144
delay(500); }
145
void
Zamer(){
146
if
(razv>=6){ADCSRA = 0b11100010;}
//delitel 4
147
if
(razv==5){ADCSRA = 0b11100011;}
//delitel 8
148
if
(razv==4){ADCSRA = 0b11100100;}
//delitel 16
149
if
(razv==3){ADCSRA = 0b11100101;}
//delitel 32
150
if
(razv==2){ADCSRA = 0b11100110;}
//delitel 64
151
if
(razv<2){ADCSRA = 0b11100111;}
//delitel 128
152
if
(razv==0){
153
for
(
int
i=0;i<700;i++){
154
while
((ADCSRA & 0x10)==0);
155
ADCSRA|=0x10;
156
delayMicroseconds(500);
157
mass[i]=ADCH;
158
}
159
}
160
if
(razv>0){
161
for
(
int
i=0;i<700;i++){
162
while
((ADCSRA & 0x10)==0);
163
ADCSRA|=0x10;
164
mass[i]=ADCH;
165
}
166
}
167
168
}
169
void
loop
() {
170
/////////////////////////////////////////удержание кнопки отключения
171
if
(digitalRead(power)==HIGH){powerON++;delay(10);}
172
if
(powerON>=timepowerON){digitalWrite(OFF,LOW);}
///отключаем питание
173
/////////////////////////////////////////удержание кнопки отключения
174
if
(pultoskop==0){
175
if
(opornoe==0){ADMUX = 0b11100011;}
//выбор внутреннего опорного 1,1В
176
if
(opornoe==1){ADMUX = 0b01100011;}
//Выбор внешнего опорного
177
delay(5);
178
if
(paus==0){Zamer();}
179
//#######################################определение точки синхронизации
180
bool
flagSINHRO=0;
181
bool
flagSINHRnull=0;
182
for
(
int
y=1;y<255;y++){
183
if
(flagSINHRO==0){
if
(mass[y]<SinU){flagSINHRnull=1;}}
184
if
(flagSINHRO==0){
if
(flagSINHRnull==1){
if
(mass[y]>SinU){flagSINHRO=1;sinhMASS=y;}}}}
185
//#######################################определение точки синхронизации
186
//максимальное значение сигнала##########################
187
Vmax=0;
188
for
(
int
y=1;y<255;y++){
if
(Vmax<mass[y]){Vmax=mass[y];} }
189
//максимальное значение сигнала##########################
190
//#######################################определение точки синхронизации
191
//#######################################отрисовка графика
192
if
(paus==0){
193
display.clearDisplay();
194
display.fillCircle(80,47-SinU/7, 2, BLACK);
//рисуем уровень синхронизации
195
x=3;
196
for
(
int
y=sinhMASS;y<sinhMASS+80;y++){
197
if
(razv<7){x++;}
198
if
(razv==7){x=x+2;}
199
if
(razv==8){x=x+3;}
200
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
201
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
202
}
203
sinhMASS=0;}
204
if
(paus==1){
205
display.clearDisplay();
206
display.drawLine(prokr/8,8,prokr/8+6,8, BLACK);
//шкала прокрутки
207
display.drawLine(prokr/8,9,prokr/8+6,9, BLACK);
//шкала прокрутки
208
x=3;
209
for
(
int
y=prokr;y<prokr+80;y++){
210
if
(razv<7){x++;}
211
if
(razv==7){x=x+2;}
212
if
(razv==8){x=x+3;}
213
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
214
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
215
}}
216
//#######################################отрисовка графика
217
for
(
byte
i=47;i>5;i=i-7){display.drawPixel(0,i, BLACK);display.drawPixel(1,i, BLACK);display.drawPixel(2,i, BLACK);}
//разметка экрана вертикальная
218
//////////////////////////////////////////////////сетка
219
for
(
byte
i=47;i>5;i=i-3){display.drawPixel(21,i, BLACK);display.drawPixel(42,i, BLACK);display.drawPixel(63,i, BLACK);}
220
for
(
byte
i=3;i<84;i=i+3){display.drawPixel(i,33, BLACK);display.drawPixel(i,19, BLACK);}
221
//////////////////////////////////////////////////сетка
222
//#######################################отрисовка menu
223
if
(menu==0){
224
display.setCursor(0,0);
225
display.setTextColor(WHITE,BLACK);
226
if
(opornoe==0){display.print(
"1.1"
);}
227
if
(opornoe==1){display.print(VCC,1);}
228
display.setTextColor(BLACK);
229
display.print(
" "
);
230
display.print(razv);
231
display.print(
" P"
);
232
if
(digitalRead(levo)==HIGH){opornoe=!opornoe;}
233
if
(digitalRead(pravo)==HIGH){opornoe=!opornoe;}
234
}
235
if
(menu==1){
236
display.setCursor(0,0);
237
display.setTextColor( BLACK);
238
if
(opornoe==0){display.print(
"1.1"
);}
239
if
(opornoe==1){display.print(VCC,1);}
240
display.setTextColor(WHITE, BLACK);
// 'inverted' text
241
display.print(
" "
);
242
display.print(razv);
243
display.setTextColor( BLACK);
// 'inverted' text
244
display.print(
" P"
);
245
if
(digitalRead(levo)==HIGH){razv=razv-1;
if
(razv==255){razv=0;}}
246
if
(digitalRead(pravo)==HIGH){razv=razv+1;
if
(razv==9){razv=8;}}
247
}
248
if
(menu==2){
249
display.setCursor(0,0);
250
display.setTextColor( BLACK);
251
if
(opornoe==0){display.print(
"1.1"
);}
252
if
(opornoe==1){display.print(VCC,1);}
253
display.print(
" "
);
254
display.print(razv);
255
display.setTextColor(WHITE, BLACK);
// 'inverted' text
256
display.print(
" P"
);
257
paus=1;
258
if
(digitalRead(levo)==HIGH){prokr=prokr-10;
if
(prokr<0){prokr=0;}}
259
if
(digitalRead(pravo)==HIGH){prokr=prokr+10;
if
(prokr>620){prokr=620;}}
260
}
261
if
(menu==3){
262
prokr=0;
263
paus=0;
264
display.setCursor(0,0);
265
display.setTextColor( BLACK);
266
if
(opornoe==0){display.print(
"1.1"
);}
267
if
(opornoe==1){display.print(VCC,1);}
268
display.print(
" "
);
269
display.print(razv);
270
display.setTextColor(BLACK);
271
display.print(
" P"
);
272
if
(digitalRead(levo)==HIGH){SinU=SinU-20;
if
(SinU<20){SinU=20;}}
273
if
(digitalRead(pravo)==HIGH){SinU=SinU+20;
if
(SinU>230){SinU=230;}}
274
display.fillCircle(80,47-SinU/7, 5, BLACK);
275
display.fillCircle(80,47-SinU/7, 2, WHITE);
276
}
277
if
(digitalRead(ok)==HIGH){menu++;
if
(menu==4){menu=0;paus=0;}}
//перебор меню
278
if
(FreqCount.available()) { count = FreqCount.read();}
//вывод частоты по готовности счетчика
279
//#######################################частоты сигнала
280
byte
Frec1=0;
281
long
Frec=0;
282
bool
flagFrec1=0;
283
bool
flagFrec2=0;
284
bool
flagFrec3=0;
285
for
(
int
y=1;y<255;y++){
286
if
(flagFrec1==0){
if
(mass[y]<SinU){flagFrec2=1;}}
287
if
(flagFrec1==0){
if
(flagFrec2==1){
if
(mass[y]>SinU){flagFrec1=1;Frec1=y;}}}
288
if
(flagFrec1==1){
if
(mass[y]<SinU){flagFrec3=1;}}
289
if
(flagFrec3==1){
if
(mass[y]>SinU){
290
if
(razv>=6){Frec=1000000/((y-Frec1-1)*3.27);}
//delitel 4
291
if
(razv==5){Frec=1000000/((y-Frec1)*3.27)/2;}
//delitel 8
292
if
(razv==4){Frec=1000000/((y-Frec1)*3.27)/4;}
//delitel 16
293
if
(razv==3){Frec=1000000/((y-Frec1)*3.27)/8;}
//delitel 32
294
if
(razv==2){Frec=1000000/((y-Frec1)*3.27)/16;}
//delitel 64
295
if
(razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}
//delitel 128
296
if
(razv==1){Frec=1000000/((y-Frec1)*3.27)/32;}
//delitel 128
297
if
(razv==0){Frec=1000000/((y-Frec1)*500);}
//delitel 128
298
flagFrec1=0;flagFrec3=0;}}}
299
//#######################################частоты сигнала
300
display.setTextColor( BLACK);
301
if
(opornoe==1){
302
if
((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);}
303
if
((Vmax*VCC/255)<2.5){countX=Frec*(overclock/16.0);}}
304
if
(opornoe==0){countX=Frec*(overclock/16.0);}
305
if
(countX<1000){display.print(
" "
);display.print(countX);display.print(
"Hz"
);}
306
if
(countX>1000){
float
countXK=countX/1000.0;display.print(countXK,1);display.print(
"KHz"
);}
307
if
(opornoe==1){display.setCursor(0,40);display.setTextColor(BLACK);
308
display.print(Vmax*VCC/255,1);}
309
if
(opornoe==0){display.setCursor(0,40);display.setTextColor(BLACK);
310
display.print(Vmax*1.1/255,1);}
311
display.print(
"V"
);
312
//#######################################отрисовка menu
313
delay(200);
314
display.display();
315
}
316
if
(pultoskop==1){Generator();}
317
if
(pultoskop==2){DDSGenerator();}
318
if
(pultoskop==3){TTL();}
319
}
320
//#######################################режим ренератора
321
void
Generator(){
322
display.clearDisplay();
323
if
(flag==0){
//флаг выборов режима настройки ШИМ или Частоты
324
if
(digitalRead(levo)==HIGH){
325
frequency=frequency-mnog;
326
if
(frequency<0){frequency=0;}
327
bool
success = SetPinFrequencySafe(led, frequency);
328
delay(3);
//защита от дребезга
329
}
330
if
(digitalRead(pravo)==HIGH){
331
frequency=frequency+mnog;
332
bool
success = SetPinFrequencySafe(led, frequency);
333
delay(3);
//защита от дребезга
334
}
335
}
336
if
(flag==1){
//флаг выборов режима настройки ШИМ или Частоты
337
if
(digitalRead(levo)==HIGH){
338
PWM=PWM-1;
339
if
(PWM<0){PWM=255;}
340
delay(3);
//защита от дребезга
341
342
}
343
if
(digitalRead(pravo)==HIGH){
344
PWM=PWM+1;
345
if
(PWM>255){PWM=0;}
346
delay(3);
//защита от дребезга
347
}
348
}
349
if
(digitalRead(ok)==HIGH){
//переключение разряда выбора частоты
350
delay(3);
//защита от дребезга
351
hag++;
352
if
(hag>=5){hag=0;}
353
}
354
////////////
355
display.setTextSize(1);
356
display.setCursor(0,5);
357
display.print(
"PWM="
);
358
display.print(PWM*100.0/255);
359
display.print(
" %"
);
360
display.drawLine(0,0,83*PWM/255.0,0, BLACK);
361
display.drawLine(0,1,83*PWM/255.0,1, BLACK);
362
display.drawLine(0,2,83*PWM/255.0,2, BLACK);
363
display.drawLine(0,15,83*PWM/255.0,15, BLACK);
364
display.drawLine(0,16,83*PWM/255.0,16, BLACK);
365
display.drawLine(0,17,83*PWM/255.0,17, BLACK);
366
///////////
367
display.setCursor(5,20);
368
display.setTextSize(2);
369
long
frequencyX=frequency*(overclock/16.0);
370
if
(frequencyX<1000){display.print(frequencyX);display.setTextSize(1);display.println(
"Hz"
);}
371
if
(frequencyX>1000){
if
(frequencyX<10000){display.print((frequencyX/1000.0),2);display.setTextSize(1);display.println(
"KHz"
);}}
372
if
(frequencyX>=10000){
if
(frequencyX<100000){display.print((frequencyX/1000.0),1);display.setTextSize(1);display.println(
"KHz"
);}}
373
if
(frequencyX>=100000){display.print((frequencyX/1000.0),0);display.setTextSize(1);display.println(
"KHz"
);}
374
display.setCursor(0,40);
375
display.setTextSize(1);
376
display.print(
">>X "
);
377
if
(hag==0){
//выбор множителя частоты
378
379
display.print(1*(overclock/16.0),1);
380
mnog=1;
381
flag=0;
382
}
383
if
(hag==1){
//выбор множителя частоты
384
display.print(10*(overclock/16.0),0);
385
mnog=10;
386
}
387
if
(hag==2){
//выбор множителя частоты
388
display.print(100*(overclock/16.0),0);
389
mnog=100;
390
}
391
if
(hag==3){
//выбор множителя частоты
392
display.print(1000*(overclock/16.0),0);
393
mnog=1000;
394
}
395
if
(hag==4){
//выбор PWM
396
display.print(
"PWM "
);
397
display.print(PWM*100.0/255);
398
display.print(
"%"
);
399
flag=1;
400
}
401
display.print(
"<<"
);
402
pwmWrite(led, PWM);
403
delay(300);
404
display.display();
405
}
406
/////////////////////DDS
407
void
DDSGenerator(){
408
int
fr=10;
409
if
(menuDDS==0){
410
display.clearDisplay();
411
display.setTextColor(WHITE, BLACK);
// 'inverted' text
412
display.setCursor(10,0);
413
display.println(
"Синус"
);
414
display.setTextColor(BLACK);
415
display.setCursor(10,10);
416
display.println(
"Треугольник"
);
417
display.setCursor(10,20);
418
display.println(
"Пила"
);
419
display.setCursor(10,30);
420
display.println(
"Пила Обр"
);
421
display.setTextColor(BLACK);
422
display.setCursor(0,40);
423
//display.print("Частота=");
424
//display.print(57);
425
//display.print("Гц");
426
delay(100);
427
display.display();
428
while
(D11_Read==LOW){
429
PWM=sinM[d];
430
pwmWrite(dds,PWM);
431
//delayMicroseconds(fr);
432
d++;
433
if
(d==32){d=0;}}
434
menuDDS++;
435
delay(200);}
436
if
(menuDDS==1){
437
display.clearDisplay();
438
display.setTextColor(BLACK);
// 'inverted' text
439
display.setCursor(10,0);
440
display.println(
"Синус"
);
441
display.setTextColor(WHITE, BLACK);
442
display.setCursor(10,10);
443
display.println(
"Треугольник"
);
444
display.setTextColor(BLACK);
445
display.setCursor(10,20);
446
display.println(
"Пила"
);
447
display.setCursor(10,30);
448
display.println(
"Пила Обр"
);
449
display.setTextColor(BLACK);
450
//display.setCursor(0,40);
451
//display.print("Частота=");
452
// display.print(57);
453
//display.print("Гц");
454
delay(100);
455
display.display();
456
while
(D11_Read==LOW){
457
PWM=trianglM[d];
458
pwmWrite(dds,PWM);
459
//delayMicroseconds(fr);
460
d++;
461
if
(d==32){d=0;}}
462
menuDDS++;
463
delay(200);}
464
if
(menuDDS==2){
465
display.clearDisplay();
466
display.setTextColor(BLACK);
// 'inverted' text
467
display.setCursor(10,0);
468
display.println(
"Синус"
);
469
display.setTextColor(BLACK);
470
display.setCursor(10,10);
471
display.println(
"Треугольник"
);
472
display.setTextColor(WHITE, BLACK);
473
display.setCursor(10,20);
474
display.println(
"Пила"
);
475
display.setTextColor(BLACK);
476
display.setCursor(10,30);
477
display.println(
"Пила Обр"
);
478
display.setTextColor(BLACK);
479
//display.setCursor(0,40);
480
//display.print("Частота=");
481
// display.print(57);
482
//display.print("Гц");
483
delay(100);
484
display.display();
485
while
(D11_Read==LOW){
486
PWM=pilaM[d];
487
pwmWrite(dds,PWM);
488
// delayMicroseconds(fr);
489
d++;
490
if
(d==32){d=0;}}
491
menuDDS++;
492
delay(200);}
493
if
(menuDDS==3){
494
display.clearDisplay();
495
display.setTextColor(BLACK);
// 'inverted' text
496
display.setCursor(10,0);
497
display.println(
"Синус"
);
498
display.setTextColor(BLACK);
499
display.setCursor(10,10);
500
display.println(
"Треугольник"
);
501
display.setTextColor(BLACK);
502
display.setCursor(10,20);
503
display.println(
"Пила"
);
504
display.setTextColor(WHITE, BLACK);
505
display.setCursor(10,30);
506
display.println(
"Пила Обр"
);
507
display.setTextColor(BLACK);
508
//display.setCursor(0,40);
509
//display.print("Частота=");
510
// display.print(57);
511
// display.print("Гц");
512
delay(100);
513
display.display();
514
while
(D11_Read==LOW){
515
PWM=RpilaM[d];
516
pwmWrite(dds,PWM);
517
//delayMicroseconds(fr);
518
d++;
519
if
(d==32){d=0;}}
520
menuDDS++;
521
delay(200);}
522
if
(menuDDS==4){menuDDS=0;}
523
524
}
525
/////////////////////DDS
526
/////////////////////TTL
527
void
TTL(){
528
display.clearDisplay();
529
display.setTextColor(BLACK);
530
display.setCursor(10,0);
531
display.println(
"Терминал"
);
532
display.setCursor(10,10);
533
display.println(
"Скорость"
);
534
display.setCursor(10,20);
535
display.print(
"-"
);
536
display.print(speedTTL);
537
display.println(
"+"
);
538
display.setCursor(0,30);
539
display.println(
"Нажми ОК-старт"
);
540
if
(digitalRead(pravo)==HIGH){speedTTL=speedTTL+100;}
541
if
(digitalRead(levo)==HIGH){speedTTL=speedTTL-100;}
542
if
(speedTTL<0){speedTTL=250000;}
543
if
(speedTTL>250000){speedTTL=0;}
544
if
(digitalRead(ok)==HIGH){
Serial
.begin(speedTTL*(16/overclock));
545
display.clearDisplay();
546
delay(100);
547
display.display();
548
int
x=0;
549
int
y=0;
550
while
(1){
551
char
incomingBytes;
552
if
(
Serial
.available() > 0) {
// Если в буфере есть данные
553
incomingBytes=
Serial
.read();
// Считывание байта в переменную incomeByte
554
display.setCursor(x,y);
555
display.print(incomingBytes);
// Печать строки в буффер дисплея
556
display.display(); x=x+6;
557
if
(x==84){x=0;y=y+8;}
558
if
(y==48){x=0;y=0;
559
display.clearDisplay();
560
delay(100);
561
display.display();}}
562
}}
563
delay(100);
564
display.display();
565
}
566
/////////////////////TTL
567
[/code]
А что такое X3 это матерноое слово сокращенно или 3 с иксом строка и как исправить ошибку что-то дописать?
Ну, что Вы, у нас здесь культурные люди собрались. И аббревеатура "ХЗ" переводится как Харитон Знает. А ссылочку почитайте - очень способствует против Харитонов.
Я поражаюсь как люди эти коды пишут,ведь такой написать код и всё прошла весна и девушки снова замужем
В 7 строке после include <CyberLib.h> нажмите энтер. #define led 9 должно быть в новой строке.
Да разделите ж Вы, наконец, 7-ую строку на две! Первая кончается символом >, а вторая начинается символом #
Друзья спасибо всем,вы конечно молодцы раз такое знаете,прошу извинить,если где-то глупости сморозил,просто у меня образования другие,9 лет другого профиля в университетах,так что постигать ущё такой объём детально не смогу,и последнее... В конце компиляции написано---недостаточно памяти,программа может работать нестабильно
Ну что же - надо поменять контроллер на контроллер, с большим объемом памяти. В крайнем случае использовать STM32 - но я этого не говорил...
и последнее...
Это далеко не последнее. Вам бы поучиться программмировать на более простыхпримерах, прежде, чем за такиебольшие браться.
и последнее...
Это далеко не последнее. Вам бы поучиться программмировать на более простыхпримерах, прежде, чем за такиебольшие браться.
тут пару лет на форуме но более 100 строк не замахиваюсь )))
Евгений Петрович, может подскажите, что, по коду радиоуправляемой тележки, очень плохо управляется, знаю с внуком Вы танк одолели, здесь аналогичное управление, 4-ре мотора по паре на левый и правый борта, драйвер L298N
А сейчас на том же принципе делаем тележку чтобы самому вместе с сестрой кататься. Чётыре мотора по 360 ватт (10Ах36В), всё по-взрослому. Железную платформу прошлым летом сделали, я тут где-то фото выкладывал, думаю к лету электронику закончим.
А что такое X3 это матерноое слово сокращенно или 3 с иксом строка и как исправить ошибку что-то дописать?
И это спрашивает ... у которого xer в нике!!!!
А сейчас на том же принципе делаем тележку чтобы самому вместе с сестрой кататься. Чётыре мотора по 360 ватт (10Ах36В), всё по-взрослому. Железную платформу прошлым летом сделали, я тут где-то фото выкладывал, думаю к лету электронику закончим.
а управление поворотом? танковое или классика?
Танковое. Там у всех 4-х колёс независимая подвеска, но никаких поворотных мехнизмов не предусмотрено.