C:\Users\vasyna\AppData\Local\Temp\ccSoHhMZ.ltrans0.ltrans.o: In function `main':
ccSoHhMZ.ltrans0.o:(.text.startup+0xa0): undefined reference to `Adafruit_GFX::cp437(bool)'
collect2.exe: error: ld returned 1 exit status
Может все таки вы выложите свои адафруит обе (общую и под конкретный контроллер и за одно и pwm и чего там еще было). На не напрягаю, но для полноты картины. Иначе труд Ваш пропадает...
Короче весь скетч под переделку или переделывать адафруит... но меня это задрало... уже 6-й раз переписываю функции вывода, особенно с кнопками проблема, на кирилице приходится переделывать весь пересчет количества символов и размещения в кнопке.
Все скомпилено на 1.6.13 и все отменно работает. Сходу видно некоторые места где используется одни и те же стринги которые можно былобы задефайнить, но я синюшный в дрын и ломает... сам аппарат покажу как будет спроектирован и отпечатан корпус.
Вот схема подключения:
Еще раз - на авторство не претендую. Камраду 240265, спасибо огромное. Все таки уследил, а я забросил.
PS. Корпус планируется со свободным местом и православным BNC разъемом с местом под схему ОУ, если к таковой по итогу кто-то дельно определится. Всем кто работал над пультоскопом спасибо!
Все я ДОГОВАРИВАЮ думаете мне нужен "геморой" учить пользоваться программой.
Настройки и библиотеки хранятся еще здесь C:\Users\User\AppData\Local\Arduino15
Если удалить эту папку Ардуино запустится с нуля и будет брать библиотеки из папки с Ардуиной.
Мне выкладывать не куда. У Вас он берет скорее всего библиотеки из вышеуказанной папки, а там Вы шрифт не поменяли.
Библы хранятся у меня в одной папке.
Такой папки C:\Users\User\AppData\Local\Arduino15 у меня и нет. Все настройки ардуино иде лежат в папке с дунькой, либы лежат в папке в дропбоксе. Решение задачи болт он выше. Вам спасибо, но в след раз доведите дело до конца. Я буду Вам в 2 раза больше пизнательней.
Не знаю как у Вас , но у меня все без "болтов" работает.
Еще раз. Скет Ваш откомпилился, но пришлось в сток докинуть 4 библиотеки. А следовательно их надо было еще найти. Потом оказалось что надо или русифицировать по нормальному adafruit (я уже е раз переделывал бибу под русификатор, чтобы не заморачиваться с лишним вызовом перекодировки, но я более или менее слежу за обновлениями библиотек и временами забываю сделать бэкап и потом просто перенести эти места правки в новую версию, да и задрало, за год 4 раза уже это делал). Т.е. не взял и расслабился, а допилинг и допилинг. Я де выложил полностью болтон решение. Скачай и радуйся.
Полагаю, разногласия по библиотекам могут быть (и очень даже бывают) изза того, что они (библиотеки), к сожалению, бывают в двух местах (а если добавлен ещё и "stm32duino" блок, то и в трёх). За этим надо следить. При чём, если соглашатся на авто апдейты библиотек, то там опять не факт куда пойдёт новая версия. Я, если не уверен, что творитса с библиотеками, откладываю в сторонку все нужные библиотекти, снимаю софт Arduino, стираю вручную Program Files (x86)/Arduino, AppData/Local/Arduino(XX), Documents/Arduino, ну и ставим по новой, и следим где держть библиотеки.
Скачайте весь пакет ардуины arduino-1.6.5-r5 там ЕСТЬ русский glcdfont.c я его выкладывал пост 2351.
Вот еще раз из того архива Adafruit_GFX_Library - glcdfont.c
Да, но толку от шрифта если библа нормально кирилицу не хавает. Для этого и есть функция utf8rus. Я ее встаривал во все функции адафруита где выводится текст. Но надоело.
Ладно. Больше не будем отвлекаться и мусорить. Готовый пакет есть и этого хватит.
Ну вроде получилось, сейчас сам выбирает осциллограф в меню, все настройки в EEPROM, коэффициент делителя и коэффициент заполнения показует и главное работоспособен.Скрин вот:
Ну вроде получилось, сейчас сам выбирает осциллограф в меню, все настройки в EEPROM, коэффициент делителя и коэффициент заполнения показует и главное работоспособен.Скрин вот:
приколько получилось, не поделитесь исходниками?)приехал сегодня дисплей 5110 думаю маленький ослик еще сделать
Ну адаптировал скетч под экран без выкрутасов, у меня сами видете как,поэтому не проверял, если что подправить не сложно,кратенько-при первом запуске пишет в eeprom настройки и по адресу 0 eeprom,запоминает что уже запускался,поэтому если в ячейке 1 то нужно комментировать строки 85 и 93 запустить и после опять запрограммировать исходник, A1 - контакт управления подсветкой, все остальное стандартно, коэффициент заполнения считывается при появлении импульсов затем просто переписывается без подсчета пока не исчезнет сигнал и появится вновь.
//Страница проэкта http://srukami.inf.ua/pultoscop_v25110.html
#include <EEPROM.h>
#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 4 //кнопка ЛЕВО(можно любой пин)
#define ok 3 //кнопка ОК(можно любой пин)
#define pravo 2 //кнопка ПРАВО(можно любой пин)
#define akb A2 //любой своюодный аналоговый пин для измерения напряжения АКБ
#define LCDPin A1 //выход на контакт подсветки LCD
#define overclock 16 //Частота на которой работает Ардуино
//Adafruit_PCD8544(CLK, DIN, DC, CS, RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(13, 12, 7, A0, 8);//пины к которым у вас подключен дисплей
byte cont=52; //контрастность дисплея
byte SinU=30; //уровень синхронизации 0 до 255
byte mode=0; //первое включение mode=255 в EEPROM
int PWM = 128; //стартовое значение ШИМ от 0 до 255
int32_t frequency = 500; //стартовое значение частоты в Гц
float VCC=5.0; //напряжение питания, меряем мультиметром
//###########################################################
int d=0;
byte menuDDS=0;
byte menuLight=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 kzap=0; //флаг коэффициента заполнения
bool paus=0; //флаг режима паузы
byte pultoskop=0; //флаг выбора генератора или осциллографа
byte razv=6;
unsigned long count =0;
byte sinX=30;
byte meaX=83;
int Vmax=0; // максимальное напряжение
int mno=1;
byte sinhMASS=0;
long countX=0;
long speedTTL=9600; //скорость терминала
int prokr=0;
int osc=150;
int s_mno= 1;
boolean lcd=false;
uint32_t tic1;
uint32_t tic2;
int duty;
// /*
void reads(){
razv = EEPROM.read(1); // читаем длину разверстки из еепром
SinU = EEPROM.read(2); // читаем режим разверстки из еепром
menu = EEPROM.read(3); // читаем menu из еепром
s_mno = EEPROM.read(4);
lcd = EEPROM.read(5); // читаем режим подсветки из еепром
}
// */
void setup(){
pinMode(A4,INPUT);
pinMode(LCDPin, OUTPUT); // подсветка дисплея
digitalWrite(OFF,HIGH); //включем питание
//Serial.begin(9600);
display.begin();
display.setContrast(cont);
//display.setRotation(true);
// /*
//При 1-м включении запомнить в EEPROM длину разверстки
mode = EEPROM.read(0); // читаем режим из еепром
if (mode =! 1) { //. закомментировать если не программируется
mode = 1; // проверяем значение в еепром
EEPROM.write(1, razv);
EEPROM.write(2, SinU);
EEPROM.write(3, menu);
EEPROM.write(4, s_mno);
EEPROM.write(5, lcd);
EEPROM.write(0, mode); // пишим его в еепром
} //. закомментировать если не программируется
reads();
if (lcd==true) digitalWrite(LCDPin,HIGH);
else digitalWrite(LCDPin,LOW);
// */
while(digitalRead(ok)==LOW){
// Если не нажата 10 сек кнопка ок в режим осцилоографа автоматом
osc--;
if (osc==0) break;
/////////////////////////////////////////удержание кнопки отключения
//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В & A3 пин осциллографа
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(78,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);
if (s_mno==1) {mno=1;display.print("x1");}
if (s_mno==2) {mno=3;display.print("x3");}
if (s_mno==3) {mno=3;display.print("x9");}
display.print("П");
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
if (s_mno==1) {mno=1;display.print("x1");}
if (s_mno==2) {mno=3;display.print("x3");}
if (s_mno==3) {mno=10;display.print("x9");}
display.print("П");
if(digitalRead(levo)==HIGH){razv=razv-1;if(razv==255){razv=0;}EEPROM.write(1, razv);}
if(digitalRead(pravo)==HIGH){razv=razv+1;if(razv==9){razv=8;}EEPROM.write(1, razv);}
}
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
if (s_mno==1) {mno=1;display.print("x1");}
if (s_mno==2) {mno=3;display.print("x3");}
if (s_mno==3) {mno=10;display.print("x9");}
display.setTextColor( BLACK); // 'inverted' text
display.print("П");
if(digitalRead(levo)==HIGH){s_mno--;if (s_mno<1) s_mno=1;EEPROM.write(4, s_mno);}
if(digitalRead(pravo)==HIGH){s_mno++;if (s_mno>3) s_mno=3;EEPROM.write(4, s_mno);}
}
if(menu==3){
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);
if (s_mno==1) {mno=1;display.print("x1");}
if (s_mno==2) {mno=3;display.print("x3");}
if (s_mno==3) {mno=10;display.print("x9");}
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.print("П");
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==4){
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);
if (s_mno==1) {mno=1;display.print("x1");}
if (s_mno==2) {mno=3;display.print("x3");}
if (s_mno==3) {mno=10;display.print("x9");}
display.setTextColor(BLACK);
display.print("П");
if(digitalRead(levo)==HIGH){SinU=SinU-20;if(SinU<20){SinU=20;}EEPROM.write(2, SinU);}
if(digitalRead(pravo)==HIGH){SinU=SinU+20;if(SinU>230){SinU=230;}EEPROM.write(2, SinU);}
display.fillCircle(78,47-SinU/7, 5, BLACK);
display.fillCircle(78,47-SinU/7, 2, WHITE);
}
if(digitalRead(ok)==HIGH){menu++;if(menu==5){menu=0;paus=0;}EEPROM.write(3, menu);}//перебор меню
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(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)*mno,1);}
if(opornoe==0){display.setCursor(0,40);display.setTextColor(BLACK);
display.print((Vmax*1.1/255)*mno,1);}
display.print("v");
if (countX < 10) kzap=true;
if (kzap==true && countX > 10){
FreqCount.end();
tic1 = asm_func(1);
tic2 = asm_func(0);
duty=(1/((float)tic1/tic2))*100;
kzap=false;
FreqCount.begin(1000);
}
if (kzap==false && countX > 10 && duty < 100){
display.setCursor(4,9);
display.setTextColor(BLACK);
display.print(duty);
display.print("%");
}
//#######################################отрисовка menu
delay(150);
display.display();
}
if(pultoskop==1){Generator();}
if(pultoskop==2){DDSGenerator();}
if(pultoskop==3){Light();}
}
//#######################################режим ренератора
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
void(* resetFunc) (void) = 0; // объявляем функцию reset с адресом 0
/////////////////////Меню Light
void Light(){
if(menuLight==0){
display.clearDisplay();
display.setCursor(3,5);
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.println("Подсветка LCD");
display.setCursor(26,16);
display.setTextColor(BLACK);
if (lcd==true) {display.println(" ON");
}else display.println("OFF");
display.setCursor(3,25);
display.println("Reboot");
}
if(menuLight==1){
display.clearDisplay();
display.setCursor(3,5);
display.setTextColor(BLACK); // 'inverted' text
display.println("Подсветка LCD");
display.setCursor(26,16);
if (lcd==true) {display.println(" ON");
}else display.println("OFF");
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.setCursor(3,25);
display.println("Reboot");
}
if(digitalRead(ok)==HIGH){delay(150);menuLight=menuLight+1;}
if(menuLight>1){menuLight=0;}
if ((menuLight==0)&&(digitalRead(pravo)==HIGH)) {lcd=true;digitalWrite(LCDPin,HIGH);EEPROM.write(5, lcd);}
if ((menuLight==0)&&(digitalRead(levo)==HIGH)) {lcd=false;digitalWrite(LCDPin,LOW);EEPROM.write(5, lcd);}
if ((menuLight==1)&&(digitalRead(pravo)==HIGH)) resetFunc();
if ((menuLight==1)&&(digitalRead(levo)==HIGH)) resetFunc(); //вызываем reset
delay(150);
display.display();
}
/////////////////////Меню Light
/////////////////////Коэффициент заполнения
uint32_t asm_func(uint8_t flag){
asm volatile (
"cli" "\n\t"
"mov r21,%0" "\n\t" // флаг что считывать
//сохранение конфигурация таймеров
"in r30,0x23" "\n\t" // r30 <- GTCCR
"ldi r18,0x83" "\n\t" // GTCCR=0x83
"out 0x23,r18" "\n\t" // GTCCR=0x83
"lds r26,0x80" "\n\t" // r26 <- TCCR1A
"sts 0x80,__zero_reg__" "\n\t" // TCCR1A=0
"lds r27,0x81" "\n\t" // r27 <- TCCR1B
"ldi r19,0x4" "\n\t"
"sts 0x81,r19" "\n\t" // TCCR1B=1<<CS12
"sts 0x85, __zero_reg__" "\n\t" //TCNT1L=0
"sts 0x84, __zero_reg__" "\n\t" //TCNT1H=0
"lds r28,0xB0" "\n\t" // r28 <- TCCR2A
"sts 0xB0,__zero_reg__" "\n\t" // TCCR2A=0
"lds r29,0xB1" "\n\t" // r29 <- TCCR2B
"ldi r20,0x1" "\n\t"
"sts 0xB1,r20" "\n\t" // TCCR2B=1<<CS20
"sts 0xB2,__zero_reg__" "\n\t" // TCNT2=0
"lds r31,0x70" "\n\t" // r31 <- TIMSK2
"sts 0x70,__zero_reg__" "\n\t" // TIMSK2=0
////*******************************************
// пройти если ноль
"wait_begin:" "\n\t"
"sbic 0x09,5" "\n\t" // Порт D5
"rjmp wait_begin" "\n\t"
// пройти если единица -> первый импульс
"wait_start:" "\n\t"
"sbis 0x9,5" "\n\t"
"rjmp wait_start" "\n\t"
"sts 0x43,__zero_reg__" "\n\t" // GTCCR=0 старт синхра
// импульс пошёл, ждём ноль
"wait_pause:" "\n\t"
"sbic 0x09,5" "\n\t"
"rjmp wait_pause" "\n\t"
"cpi r21,__zero_reg__" "\n\t" //
"brne duty" "\n\t"
// импульс кончился, ждём конца периода (единицу)
"wait_end:" "\n\t"
"sbis 0x9,5" "\n\t"
"rjmp wait_end" "\n\t"
"duty:" "\n\t"
////*******************************************
//восстановление таймеров
"sts 0x80,r26" "\n\t" // TCCR1B
"sts 0x81,r27" "\n\t" // TCCR1B
"sts 0xB0,r28" "\n\t" // TCCR2A
"sts 0xB1,r29" "\n\t" // TCCR2B
"sts 0x70,r31" "\n\t" // TIMSK2
"out 0x23,r30" "\n\t" // GTCCR старт таймеры
//вывод 3х байт
"lds r22, 0xB2" "\n\t" // tctn2 0 байт
"lds r23, 0x84" "\n\t" // TCNT1L 1 байт
"lds r24, 0x85" "\n\t" // TCNT1H 2 байт
"lds r25, __zero_reg__" "\n\t" // пустой 3 байт
"sei" "\n\t"
::"r" (flag): ); }
/////////////////////Коэффициент заполнения
Скетч скомпилировался без проблем. IDE Arduino 1.8.1.
Используем библиотеку EEPROM версии 2.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM
Используем библиотеку Adafruit_GFX_Library версии 1.0.2 из папки: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_GFX_Library
Используем библиотеку Adafruit-PCD8544-Nokia-5110-LCD-library-master версии 1.0.1 из папки: C:\Users\Admin\Documents\Arduino\libraries\Adafruit-PCD8544-Nokia-5110-LCD-library-master
Используем библиотеку SPI версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
Используем библиотеку FreqCount версии 1.2 из папки: C:\Users\Admin\Documents\Arduino\libraries\FreqCount
Используем библиотеку PWM в папке: C:\Users\Admin\Documents\Arduino\libraries\PWM (legacy)
Используем библиотеку CyberLib в папке: C:\Users\Admin\Documents\Arduino\libraries\CyberLib (legacy)
Скетч использует 18638 байт (57%) памяти устройства. Всего доступно 32256 байт.
воткнул наконец в корпус, пока не все доделано, нет всех переключателей, делители и т д
Поздравляю с закорпусованностью! :) Может, для однозначности, можете подписать, с какого поста там прошивка, ни может ещё какие важности. Знаете как, многие могут с конце ветку читать, ит.п. :) Спасибо!
воткнул наконец в корпус, пока не все доделано, нет всех переключателей, делители и т д
Поздравляю с закорпусованностью! :) Может, для однозначности, можете подписать, с какого поста там прошивка, ни может ещё какие важности. Знаете как, многие могут с конце ветку читать, ит.п. :) Спасибо!
#1443 вот тут скетч помоему,важностей нет вроде никаких))) вместо схемы отключения пока что сделана кнопка на А1 массу подает, тем самым ребутает дисплей, в наличии просто нет pnp транзисторов=)
Для себя изменил:
Автоматическое отключение при достижении напряжения питания ниже 2,8в.
Подача двойного звукового сигнала каждые 10 минут (таблетка от забывчивости).
Установка через меню состояния подсветки постоянно ВКЛ или выкл через установленное время.(дискретность 5сек)
Установка через меню опорного напряжения.
Установка через меню контрастности дисплея.
Установка через меню звукового сопровождение нажатие клавиш.
В пультоскопе: запоминание значений развертки, уровня синхронизации.
В генераторе: запоминание значений скважности, частоты, выбранного множителя частоты.
В терминале: выбор скорости терминала через кейсы от 300 бод до 256000 бод, запоминание значения.
Пультоскоп считаю очень удобным. Спасибо автору за идею и код!
Да, конечно... Я дописывал скейтч еще летом, на прототипе, и вот что-то найти не могу... Неакуратно отношусь к наработкам :)
В крайнем случае, перепишу по новой и опубликую здесь.
Схема как у автора, единственно добавил схему преобразователя на MC34063 и делители. А так же закрыл входы осцила и терминала стабилитронами на 5,1В.
По поводу стабилитронов, не лучшее решение, но качесвто эпюры меня не сильно интересует, а вот паленые порты сильно. Ткнул в генератор авто, а делитель не переключил :)
Так же бывает, что нужно посмотреть в терминале, а логические уровни выше 5 вольт. Стабилитроны спасали уже :)
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS, выбор пал на dso138 но после того как почитал и посмотрел понял что он мягко говоря, не очень. Наткнулся на Пультоскоп который как я понял лучше и дешевле вышеупомянутого китайца Захотел собрать и тут разные версии с разными конфигурациями дисплеев под которые нужны свои драйвера. Ниже составил смету для сборки данного осцилографа. Просьба к форумчанам подскажите исходя из вашего опыта, может какие то детали плохо работают или есть какие то подводные камни при работе с ними или что то неучел. Спасибо
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS, выбор пал на dso138 но после того как почитал и посмотрел понял что он мягко говоря, не очень. Наткнулся на Пультоскоп который как я понял лучше и дешевле вышеупомянутого китайца Захотел собрать и тут разные версии с разными конфигурациями дисплеев под которые нужны свои драйвера. Ниже составил смету для сборки данного осцилографа. Просьба к форумчанам подскажите исходя из вашего опыта, может какие то детали плохо работают или есть какие то подводные камни при работе с ними или что то неучел. Спасибо
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS,
Для таких задач вам нужно осциллограф с полосой не менее 100МГц . Это не начального уровня, это могуть быть младшие модели профессионального уровня, >= 1000 $
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS,
Для таких задач вам нужно осциллограф с полосой не менее 100МГц . Это не начального уровня, это могуть быть младшие модели профессионального уровня, >= 1000 $
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
Почему 4 ? Считают же исходя из скорострельности АЦП. Например у моего осциллографа полоса 300Mhz, а выборка 2 GSample/sec, соответссно количество точек будет 2E9/24E6= ~83 точки. А по вашей методике получилось бы лишь 300/24 = ~12 точек :)
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
Почему 4 ? Считают же исходя из скорострельности АЦП. Например у моего осциллографа полоса 300Mhz, а выборка 2 GSample/sec, соответссно количество точек будет 2E9/24E6= ~83 точки. А по вашей методике получилось бы лишь 300/24 = ~12 точек :)
Вот эти вот полосы и выборки... Я все время их путаю )
Значит, все - таки лучше купить китайца в сборе, чем собирать на ардуине? А осциллограф хамелеон намного мощнее dsoO62? Осц 062 не сильно по цене отличается от 138, можно его взять так как на хамелеон экранчик не найти. П.С. Делать точные расчеты с помощью осциллографа не собираюсь, нужно лишь для диагностики МП, то есть на уровне сигнал идет , значит МП не заводится не из за плохого кварца, ремонт МП не является основной работой, просто интересно в них ковырятьсч
Значит, все - таки лучше купить китайца в сборе, чем собирать на ардуине? А осциллограф хамелеон намного мощнее dsoO62? Осц 062 не сильно по цене отличается от 138, можно его взять так как на хамелеон экранчик не найти. П.С. Делать точные расчеты с помощью осциллографа не собираюсь, нужно лишь для диагностики МП, то есть на уровне сигнал идет , значит МП не заводится не из за плохого кварца, ремонт МП не является основной работой, просто интересно в них ковырятьсч
Предлагаю Вам купить 2 десятка кварцев и не любить людям мозг. Нельзя на подобном пробнике увидеть работу ваших кварцев.
Значит, все - таки лучше купить китайца в сборе, чем собирать на ардуине? А осциллограф хамелеон намного мощнее dsoO62? Осц 062 не сильно по цене отличается от 138, можно его взять так как на хамелеон экранчик не найти. П.С. Делать точные расчеты с помощью осциллографа не собираюсь, нужно лишь для диагностики МП, то есть на уровне сигнал идет , значит МП не заводится не из за плохого кварца, ремонт МП не является основной работой, просто интересно в них ковырятьсч
Я думаю следует логировать аналоговый сигнал . места занимает конечно больше но универсальней. к тому-же 328 позволяет использовать SD более 2Г. а затем просматривать на экране. идей много. Жаль я позно включился в микроконтролерную тему. есть идея вывести на внешний разьем SPI шину + питание, и легко без разбора корпуса можно перепрошить и подключать модули общающиеся через SPI. так-же при надобности на вход прикрутить доп. усилитель или делитель. мне по работе нужно и токовый (0-5ма) проверить и ИРПС и RS232 и RS485, частоту и амплитуду сигнала. так-же нужен источник напряжения от 0 до 50 мВ с возможностью атоматичаского повышения и понижения уровня (ГКЧ только очень медленный 1 мин на период - приблизительно).я все это конечно реализую со временим и выложу только разберусь с нормальной IDE и С++ - родная оболочка полный отстой ( в далекой молодости лет 10 писал на Clipper базы данных (под DOS) и лет 5 занимался 1С-бухгалтерия, да и сыну в этом году помогал писать диплом для технаря на PHP (фреймворки , классы - пришлось поработать мозгами, но опыт не пропьешь). сейчас в основном для работы Excel использую но VB не лезу. а тут такая возможность для творчества . класный проект! молодцы.
пока в процесе изготовления. уже переделал под дисплей Nokia 5200 (развернуты буквы, изображение), и сейчас собираю модульный вариант на 5110 для отработки требуемых мне функций. сейчас разберусь как на форуме фотки прикручивать и выложу парочку
Ну Вы даете.... Еще раз
Саму ардуину и библиотеки отсюда http://srukami.inf.ua/pultoscop_v25110.html и http://srukami.inf.ua/pultoscop_v2.html . Русский шрифт находится в Adafruit GFX.
glcdfont.c
[code] #ifndef FONT5X7_H #define FONT5X7_H #ifdef __AVR__ #include <avr/io.h> #include <avr/pgmspace.h> #else #define PROGMEM #endif // Standard ASCII 5x7 font static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 0x20 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 0x21 0x00, 0x07, 0x00, 0x07, 0x00,// " 0x22 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 0x23 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 0x24 0x23, 0x13, 0x08, 0x64, 0x62,// % 0x25 0x36, 0x49, 0x55, 0x22, 0x50,// & 0x26 0x00, 0x05, 0x03, 0x00, 0x00,// ' 0x27 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 0x28 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 0x29 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 0x2A 0x08, 0x08, 0x3E, 0x08, 0x08,// + 0x2B 0x00, 0x50, 0x30, 0x00, 0x00,// , 0x2C 0x08, 0x08, 0x08, 0x08, 0x08,// - 0x2D 0x00, 0x60, 0x60, 0x00, 0x00,// . 0x2E 0x20, 0x10, 0x08, 0x04, 0x02,// / 0x2F 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 0x30 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 0x31 0x42, 0x61, 0x51, 0x49, 0x46,// 2 0x32 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 0x33 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 0x34 0x27, 0x45, 0x45, 0x45, 0x39,// 5 0x35 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 0x36 0x01, 0x71, 0x09, 0x05, 0x03,// 7 0x37 0x36, 0x49, 0x49, 0x49, 0x36,// 8 0x38 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 0x39 0x00, 0x36, 0x36, 0x00, 0x00,// : 0x3A 0x00, 0x56, 0x36, 0x00, 0x00,// ; 0x3B 0x00, 0x08, 0x14, 0x22, 0x41,// < 0x3C 0x14, 0x14, 0x14, 0x14, 0x14,// = 0x3D 0x41, 0x22, 0x14, 0x08, 0x00,// > 0x3E 0x02, 0x01, 0x51, 0x09, 0x06,// ? 0x3F 0x32, 0x49, 0x79, 0x41, 0x3E,// @ 0x40 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 0x41 0x7F, 0x49, 0x49, 0x49, 0x36,// B 0x42 0x3E, 0x41, 0x41, 0x41, 0x22,// C 0x43 0x7F, 0x41, 0x41, 0x22, 0x1C,// D 0x44 0x7F, 0x49, 0x49, 0x49, 0x41,// E 0x45 0x7F, 0x09, 0x09, 0x01, 0x01,// F 0x46 0x3E, 0x41, 0x41, 0x51, 0x32,// G 0x47 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 0x48 0x00, 0x41, 0x7F, 0x41, 0x00,// I 0x49 0x20, 0x40, 0x41, 0x3F, 0x01,// J 0x4A 0x7F, 0x08, 0x14, 0x22, 0x41,// K 0x4B 0x7F, 0x40, 0x40, 0x40, 0x40,// L 0x4C 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 0x4D 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 0x4E 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 0x4F 0x7F, 0x09, 0x09, 0x09, 0x06,// P 0x50 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 0x51 0x7F, 0x09, 0x19, 0x29, 0x46,// R 0x52 0x46, 0x49, 0x49, 0x49, 0x31,// S 0x53 0x01, 0x01, 0x7F, 0x01, 0x01,// T 0x54 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 0x55 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 0x56 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 0x57 0x63, 0x14, 0x08, 0x14, 0x63,// X 0x58 0x03, 0x04, 0x78, 0x04, 0x03,// Y 0x59 0x61, 0x51, 0x49, 0x45, 0x43,// Z 0x5A 0x00, 0x00, 0x7F, 0x41, 0x41,// [ 0x5B 0x02, 0x04, 0x08, 0x10, 0x20,// "\" 0x5C 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 0x5D 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 0x5E 0x40, 0x40, 0x40, 0x40, 0x40,// _ 0x5F 0x00, 0x01, 0x02, 0x04, 0x00,// ` 0x60 0x20, 0x54, 0x54, 0x54, 0x78,// a 0x61 0x7F, 0x48, 0x44, 0x44, 0x38,// b 0x62 0x38, 0x44, 0x44, 0x44, 0x20,// c 0x63 0x38, 0x44, 0x44, 0x48, 0x7F,// d 0x64 0x38, 0x54, 0x54, 0x54, 0x18,// e 0x65 0x08, 0x7E, 0x09, 0x01, 0x02,// f 0x66 0x08, 0x14, 0x54, 0x54, 0x3C,// g 0x67 0x7F, 0x08, 0x04, 0x04, 0x78,// h 0x68 0x00, 0x44, 0x7D, 0x40, 0x00,// i 0x69 0x20, 0x40, 0x44, 0x3D, 0x00,// j 0x6A 0x00, 0x7F, 0x10, 0x28, 0x44,// k 0x6B 0x00, 0x41, 0x7F, 0x40, 0x00,// l 0x6C 0x7C, 0x04, 0x18, 0x04, 0x78,// m 0x6D 0x7C, 0x08, 0x04, 0x04, 0x78,// n 0x6E 0x38, 0x44, 0x44, 0x44, 0x38,// o 0x6F 0x7C, 0x14, 0x14, 0x14, 0x08,// p 0x70 0x08, 0x14, 0x14, 0x18, 0x7C,// q 0x71 0x7C, 0x08, 0x04, 0x04, 0x08,// r 0x72 0x48, 0x54, 0x54, 0x54, 0x20,// s 0x73 0x04, 0x3F, 0x44, 0x40, 0x20,// t 0x74 0x3C, 0x40, 0x40, 0x20, 0x7C,// u 0x75 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 0x76 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 0x77 0x44, 0x28, 0x10, 0x28, 0x44,// x 0x78 0x0C, 0x50, 0x50, 0x50, 0x3C,// y 0x79 0x44, 0x64, 0x54, 0x4C, 0x44,// z 0x7A 0x00, 0x08, 0x36, 0x41, 0x00,// { 0x7B 0x00, 0x00, 0x7F, 0x00, 0x00,// | 0x7C 0x00, 0x41, 0x36, 0x08, 0x00,// } 0x7D 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 0x7E 0x08, 0x1C, 0x2A, 0x08, 0x08, // <- 0x7F 0x7C, 0x14, 0x14, 0x14, 0x08,//p 0x80 0x38, 0x44, 0x44, 0x44, 0x20,//c 0x81 0x04, 0x04, 0x7c, 0x04, 0x04,//т 0x82 0x0C, 0x50, 0x50, 0x50, 0x3C,//у 0x83 0x30, 0x48, 0xfc, 0x48, 0x30,//ф 0x84 0x44, 0x28, 0x10, 0x28, 0x44,//x 0x85 0x7c, 0x40, 0x40, 0x40, 0xfc,//ц 0x86 0x0c, 0x10, 0x10, 0x10, 0x7c,//ч 0x87 0x7c, 0x40, 0x7c, 0x40, 0x7c,//ш 0x88 0x7c, 0x40, 0x7c, 0x40, 0xfc,//щ 0x89 0x04, 0x7c, 0x50, 0x50, 0x20,//ъ 0x8A 0x7c, 0x50, 0x50, 0x20, 0x7c,//ы 0x8B 0x7c, 0x50, 0x50, 0x20, 0x00,//ь 0x8C 0x28, 0x44, 0x54, 0x54, 0x38,//э 0x8D 0x7c, 0x10, 0x38, 0x44, 0x38,//ю 0x8E 0x08, 0x54, 0x34, 0x14, 0x7c,//я 0x8F 0x7e, 0x11, 0x11, 0x11, 0x7e,//A 0x90 0x7f, 0x49, 0x49, 0x49, 0x33,//Б 0x91 0x7f, 0x49, 0x49, 0x49, 0x36,//В 0x92 0x7f, 0x01, 0x01, 0x01, 0x03,//Г 0x93 0xe0, 0x51, 0x4f, 0x41, 0xff,//Д 0x94 0x7f, 0x49, 0x49, 0x49, 0x41,//E 0x95 0x77, 0x08, 0x7f, 0x08, 0x77,//Ж 0x96 0x41, 0x49, 0x49, 0x49, 0x36,//З 0x97 0x7f, 0x10, 0x08, 0x04, 0x7f,//И 0x98 0x7c, 0x21, 0x12, 0x09, 0x7c,//Й 0x99 0x7f, 0x08, 0x14, 0x22, 0x41,//K 0x9A 0x20, 0x41, 0x3f, 0x01, 0x7f,//Л 0x9B 0x7f, 0x02, 0x0c, 0x02, 0x7f,//M 0x9C 0x7f, 0x08, 0x08, 0x08, 0x7f,//H 0x9D 0x3e, 0x41, 0x41, 0x41, 0x3e,//O 0x9E 0x7f, 0x01, 0x01, 0x01, 0x7f,//П 0x9F 0x7f, 0x09, 0x09, 0x09, 0x06,//P 0xA0 0x3e, 0x41, 0x41, 0x41, 0x22,//C 0xA1 0x01, 0x01, 0x7f, 0x01, 0x01,//T 0xA2 0x47, 0x28, 0x10, 0x08, 0x07,//У 0xA3 0x1c, 0x22, 0x7f, 0x22, 0x1c,//Ф 0xA4 0x63, 0x14, 0x08, 0x14, 0x63,//X 0xA5 0x7f, 0x40, 0x40, 0x40, 0xff,//Ц 0xA6 0x07, 0x08, 0x08, 0x08, 0x7f,//Ч 0xA7 0x7f, 0x40, 0x7f, 0x40, 0x7f,//Ш 0xA8 0x7f, 0x40, 0x7f, 0x40, 0xff,//Щ 0xA9 0x01, 0x7f, 0x48, 0x48, 0x30,//Ъ 0xAA 0x7f, 0x48, 0x30, 0x00, 0x7f,//Ы 0xAB 0x00, 0x7f, 0x48, 0x48, 0x30,//Э 0xAC 0x22, 0x41, 0x49, 0x49, 0x3e,//Ь 0xAD 0x7f, 0x08, 0x3e, 0x41, 0x3e,//Ю 0xAE 0x46, 0x29, 0x19, 0x09, 0x7f,//Я 0xAF 0x20, 0x54, 0x54, 0x54, 0x78,//a 0xB0 0x3c, 0x4a, 0x4a, 0x49, 0x31,//б 0xB1 0x7c, 0x54, 0x54, 0x28, 0x00,//в 0xB2 0x7c, 0x04, 0x04, 0x04, 0x0c,//г 0xB3 0xe0, 0x54, 0x4c, 0x44, 0xfc,//д 0xB4 0x38, 0x54, 0x54, 0x54, 0x18,//e 0xB5 0x6c, 0x10, 0x7c, 0x10, 0x6c,//ж 0xB6 0x44, 0x44, 0x54, 0x54, 0x28,//з 0xB7 0x7c, 0x20, 0x10, 0x08, 0x7c,//и 0xB8 0x7c, 0x41, 0x22, 0x11, 0x7c,//й 0xB9 0x7c, 0x10, 0x28, 0x44, 0x00,//к 0xBA 0x20, 0x44, 0x3c, 0x04, 0x7c,//л 0xBB 0x7c, 0x08, 0x10, 0x08, 0x7c,//м 0xBC 0x7c, 0x10, 0x10, 0x10, 0x7c,//н 0xBD 0x38, 0x44, 0x44, 0x44, 0x38,//o 0xBE 0x7c, 0x04, 0x04, 0x04, 0x7c,//п 0xBF }; #endif // FONT5X7_H [/code]http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafruit-gfx-i-vyvod-russkikh-bukv-na-displei-v-kodi
https://www.google.ru/search?q=AO3401A&ie=utf-8&oe=utf-8&gws_rd=cr&ei=ue...
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafruit-gfx-i-vyvod-russkikh-bukv-na-displei-v-kodi
https://www.google.ru/search?q=AO3401A&ie=utf-8&oe=utf-8&gws_rd=cr&ei=uel0WOPRM4quswHL3LrwCQ#newwindow=1&q=glcdfont.c+%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9
Что то вы не договариваете. скачал от сюда http://srukami.inf.ua/pultoscop_v25110.html скетч и библы. Убрал свои адафруит и прочее и закинул эти, скомпили, прошил. Все равно кракозябры. ладно, делаю по вашему, http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafruit-gfx-i-vyvod-russkikh-bukv-na-displei-v-kodi меняю font в адафруит, добавляю display.cp437(true);
Все я ДОГОВАРИВАЮ думаете мне нужен "геморой" учить пользоваться программой.
Настройки и библиотеки хранятся еще здесь C:\Users\User\AppData\Local\Arduino15
Если удалить эту папку Ардуино запустится с нуля и будет брать библиотеки из папки с Ардуиной.
Мне выкладывать не куда. У Вас он берет скорее всего библиотеки из вышеуказанной папки, а там Вы шрифт не поменяли.
Выкладываю верное решени. На авторство не претендую Но скетч - болтон даже на последнем IDE.
Поехали скетч:
Отдельно выложу либы: https://www.dropbox.com/s/ymq79p9fpucdkdv/lib.7z?dl=0
Они же с источников
#ifndef FONT5X7_H #define FONT5X7_H #ifdef __AVR__ #include <avr/io.h> #include <avr/pgmspace.h> #else #define PROGMEM #endif // Standard ASCII 5x7 font static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x55, 0x51, 0x55, 0x3E, 0x3E, 0x6B, 0x6F, 0x6B, 0x3E, 0x0C, 0x1E, 0x3C, 0x1E, 0x0C, 0x08, 0x1C, 0x3E, 0x1C, 0x08, 0x1C, 0x4A, 0x7F, 0x4A, 0x1C, 0x18, 0x5C, 0x7F, 0x5C, 0x18, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x7F, 0x63, 0x63, 0x63, 0x7F, 0x00, 0x1C, 0x14, 0x1C, 0x00, 0x7F, 0x63, 0x6B, 0x63, 0x7F, 0x30, 0x48, 0x4D, 0x33, 0x07, 0x06, 0x29, 0x79, 0x29, 0x06, 0x20, 0x50, 0x3F, 0x02, 0x0C, 0x60, 0x7F, 0x05, 0x35, 0x3F, 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x00, 0x7F, 0x3E, 0x1C, 0x08, 0x08, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x00, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x4A, 0x55, 0x55, 0x55, 0x29, 0x60, 0x60, 0x60, 0x60, 0x60, 0x54, 0x62, 0x7F, 0x62, 0x54, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x08, 0x10, 0x3F, 0x10, 0x08, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x1C, 0x3E, 0x08, 0x3E, 0x1C, 0x30, 0x3C, 0x3F, 0x3C, 0x30, 0x06, 0x1E, 0x7E, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0xA0, 0x60, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x44, 0x42, 0x7F, 0x40, 0x40, 0x42, 0x61, 0x51, 0x49, 0x46, 0x21, 0x41, 0x45, 0x4B, 0x31, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x01, 0x71, 0x09, 0x05, 0x03, 0x36, 0x49, 0x49, 0x49, 0x36, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0xAC, 0x6C, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x51, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x55, 0x5E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x22, 0x1C, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x49, 0x49, 0x7A, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x60, 0x7F, 0x02, 0x0C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x46, 0x49, 0x49, 0x49, 0x31, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x3C, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x07, 0x08, 0x70, 0x08, 0x07, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x01, 0x02, 0x04, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78, 0x7F, 0x48, 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x48, 0x38, 0x44, 0x44, 0x48, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x08, 0x7E, 0x09, 0x01, 0x02, 0x08, 0x54, 0x54, 0x58, 0x3C, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x44, 0x3D, 0x00, 0x7F, 0x10, 0x10, 0x28, 0x44, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0x7C, 0x14, 0x14, 0x14, 0x08, 0x08, 0x14, 0x14, 0x0C, 0x7C, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x3F, 0x44, 0x40, 0x20, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x38, 0x40, 0x3C, 0x44, 0x28, 0x10, 0x28, 0x44, 0x0C, 0x50, 0x50, 0x50, 0x3C, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x70, 0x48, 0x44, 0x48, 0x70, 0x00, 0x0E, 0x11, 0x0E, 0x00, 0x00, 0x12, 0x1F, 0x10, 0x00, 0x00, 0x12, 0x19, 0x16, 0x00, 0x00, 0x11, 0x15, 0x0B, 0x00, 0x00, 0x07, 0x04, 0x1F, 0x00, 0x00, 0x17, 0x15, 0x09, 0x00, 0x00, 0x0E, 0x15, 0x09, 0x00, 0x00, 0x01, 0x1D, 0x03, 0x00, 0x00, 0x0A, 0x15, 0x0A, 0x00, 0x00, 0x12, 0x15, 0x0E, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x40, 0x00, 0x40, 0x00, 0x40, 0x60, 0x00, 0x40, 0x00, 0x40, 0x60, 0x00, 0x70, 0x00, 0x40, 0x60, 0x00, 0x70, 0x00, 0x78, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x7C, 0x00, 0x7E, 0x00, 0x40, 0x7C, 0x00, 0x7E, 0x00, 0x7F, 0x1C, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x1C, 0x77, 0x41, 0x5D, 0x5D, 0x41, 0x41, 0x41, 0x5D, 0x5D, 0x5D, 0x5D, 0x41, 0x5D, 0x5D, 0x5D, 0x5D, 0x41, 0x7F, 0x00, 0x22, 0x1C, 0x14, 0x1C, 0x22, 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x46, 0x5D, 0x55, 0x5D, 0x31, 0x7C, 0x55, 0x54, 0x55, 0x44, 0x08, 0x08, 0x2A, 0x08, 0x08, 0x00, 0x14, 0x08, 0x14, 0x00, 0x08, 0x14, 0x22, 0x08, 0x14, 0x7F, 0x41, 0x71, 0x31, 0x1F, 0x03, 0x05, 0x7F, 0x05, 0x03, 0x22, 0x14, 0x7F, 0x55, 0x22, 0x02, 0x55, 0x7D, 0x05, 0x02, 0x06, 0x09, 0x09, 0x06, 0x00, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x1C, 0x14, 0x1C, 0x22, 0x7F, 0x20, 0x3E, 0x61, 0x3E, 0x20, 0x20, 0x50, 0x3F, 0x02, 0x0C, 0x80, 0x7C, 0x20, 0x3C, 0x40, 0x44, 0x3C, 0x04, 0x7C, 0x44, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x55, 0x54, 0x55, 0x18, 0x7E, 0x08, 0x10, 0x7F, 0x01, 0x08, 0x10, 0x08, 0x04, 0x02, 0x14, 0x08, 0x22, 0x14, 0x08, 0x0E, 0x06, 0x0A, 0x10, 0x20, 0x20, 0x10, 0x0A, 0x06, 0x0E, 0x38, 0x30, 0x28, 0x04, 0x02, 0x02, 0x04, 0x28, 0x30, 0x38, 0x7E, 0x11, 0x11, 0x11, 0x7E, 0x7F, 0x49, 0x49, 0x49, 0x31, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x7F, 0x01, 0x01, 0x01, 0x03, 0xC0, 0x7F, 0x41, 0x7F, 0xC0, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x77, 0x08, 0x7F, 0x08, 0x77, 0x41, 0x49, 0x49, 0x49, 0x36, 0x7F, 0x10, 0x08, 0x04, 0x7F, 0x7C, 0x21, 0x12, 0x09, 0x7C, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x40, 0x3E, 0x01, 0x01, 0x7F, 0x7F, 0x02, 0x0C, 0x02, 0x7F, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x01, 0x01, 0x01, 0x7F, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x07, 0x48, 0x48, 0x48, 0x3F, 0x0E, 0x11, 0x7F, 0x11, 0x0E, 0x63, 0x14, 0x08, 0x14, 0x63, 0x7F, 0x40, 0x40, 0x7F, 0xC0, 0x07, 0x08, 0x08, 0x08, 0x7F, 0x7F, 0x40, 0x7F, 0x40, 0x7F, 0x7F, 0x40, 0x7F, 0x40, 0xFF, 0x01, 0x7F, 0x48, 0x48, 0x30, 0x7F, 0x48, 0x48, 0x30, 0x7F, 0x7F, 0x48, 0x48, 0x48, 0x30, 0x22, 0x41, 0x49, 0x49, 0x3E, 0x7F, 0x08, 0x3E, 0x41, 0x3E, 0x46, 0x29, 0x19, 0x09, 0x7F, 0x20, 0x54, 0x54, 0x54, 0x78, 0x3C, 0x4A, 0x4A, 0x49, 0x31, 0x7C, 0x54, 0x54, 0x54, 0x28, 0x7C, 0x04, 0x04, 0x04, 0x0C, 0xC0, 0x78, 0x44, 0x7C, 0xC0, 0x38, 0x54, 0x54, 0x54, 0x18, 0x6C, 0x10, 0x7C, 0x10, 0x6C, 0x44, 0x54, 0x54, 0x54, 0x28, 0x7C, 0x20, 0x10, 0x08, 0x7C, 0x7C, 0x40, 0x26, 0x10, 0x7C, 0x7C, 0x10, 0x10, 0x28, 0x44, 0x40, 0x38, 0x04, 0x04, 0x7C, 0x7C, 0x08, 0x10, 0x08, 0x7C, 0x7C, 0x10, 0x10, 0x10, 0x7C, 0x38, 0x44, 0x44, 0x44, 0x38, 0x7C, 0x04, 0x04, 0x04, 0x7C, 0x7C, 0x14, 0x14, 0x14, 0x08, 0x38, 0x44, 0x44, 0x44, 0x48, 0x04, 0x04, 0x7C, 0x04, 0x04, 0x0C, 0x50, 0x50, 0x50, 0x3C, 0x18, 0x24, 0xFC, 0x24, 0x18, 0x44, 0x28, 0x10, 0x28, 0x44, 0x7C, 0x40, 0x40, 0x7C, 0xC0, 0x0C, 0x10, 0x10, 0x10, 0x7C, 0x7C, 0x40, 0x7C, 0x40, 0x7C, 0x7C, 0x40, 0x7C, 0x40, 0xFC, 0x04, 0x7C, 0x50, 0x50, 0x20, 0x7C, 0x50, 0x50, 0x20, 0x7C, 0x7C, 0x50, 0x50, 0x50, 0x20, 0x28, 0x44, 0x54, 0x54, 0x38, 0x7C, 0x10, 0x38, 0x44, 0x38, 0x48, 0x34, 0x14, 0x14, 0x7C }; #endif // FONT5X7_HВсе скомпилено на 1.6.13 и все отменно работает. Сходу видно некоторые места где используется одни и те же стринги которые можно былобы задефайнить, но я синюшный в дрын и ломает... сам аппарат покажу как будет спроектирован и отпечатан корпус.
Вот схема подключения:
Еще раз - на авторство не претендую. Камраду 240265, спасибо огромное. Все таки уследил, а я забросил.
PS. Корпус планируется со свободным местом и православным BNC разъемом с местом под схему ОУ, если к таковой по итогу кто-то дельно определится. Всем кто работал над пультоскопом спасибо!
Все я ДОГОВАРИВАЮ думаете мне нужен "геморой" учить пользоваться программой.
Настройки и библиотеки хранятся еще здесь C:\Users\User\AppData\Local\Arduino15
Если удалить эту папку Ардуино запустится с нуля и будет брать библиотеки из папки с Ардуиной.
Мне выкладывать не куда. У Вас он берет скорее всего библиотеки из вышеуказанной папки, а там Вы шрифт не поменяли.
Библы хранятся у меня в одной папке.
Такой папки C:\Users\User\AppData\Local\Arduino15 у меня и нет. Все настройки ардуино иде лежат в папке с дунькой, либы лежат в папке в дропбоксе. Решение задачи болт он выше. Вам спасибо, но в след раз доведите дело до конца. Я буду Вам в 2 раза больше пизнательней.
Не знаю как у Вас , но у меня все без "болтов" работает.
Не знаю как у Вас , но у меня все без "болтов" работает.
Еще раз. Скет Ваш откомпилился, но пришлось в сток докинуть 4 библиотеки. А следовательно их надо было еще найти. Потом оказалось что надо или русифицировать по нормальному adafruit (я уже е раз переделывал бибу под русификатор, чтобы не заморачиваться с лишним вызовом перекодировки, но я более или менее слежу за обновлениями библиотек и временами забываю сделать бэкап и потом просто перенести эти места правки в новую версию, да и задрало, за год 4 раза уже это делал). Т.е. не взял и расслабился, а допилинг и допилинг. Я де выложил полностью болтон решение. Скачай и радуйся.
Так Я же давал ссылку на сайт Автора. Там есть все нужные либы и русифцираваная тоже.
Так Я же давал ссылку на сайт Автора. Там есть все нужные либы и русифцираваная тоже.
Нет там руссифицированной версии.
Скачайте весь пакет ардуины arduino-1.6.5-r5 там ЕСТЬ русский glcdfont.c я его выкладывал пост 2351.
Вот еще раз из того архива Adafruit_GFX_Library - glcdfont.c
#ifndef FONT5X7_H #define FONT5X7_H #ifdef __AVR__ #include <avr/io.h> #include <avr/pgmspace.h> #else #define PROGMEM #endif // Standard ASCII 5x7 font static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 0x20 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 0x21 0x00, 0x07, 0x00, 0x07, 0x00,// " 0x22 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 0x23 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 0x24 0x23, 0x13, 0x08, 0x64, 0x62,// % 0x25 0x36, 0x49, 0x55, 0x22, 0x50,// & 0x26 0x00, 0x05, 0x03, 0x00, 0x00,// ' 0x27 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 0x28 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 0x29 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 0x2A 0x08, 0x08, 0x3E, 0x08, 0x08,// + 0x2B 0x00, 0x50, 0x30, 0x00, 0x00,// , 0x2C 0x08, 0x08, 0x08, 0x08, 0x08,// - 0x2D 0x00, 0x60, 0x60, 0x00, 0x00,// . 0x2E 0x20, 0x10, 0x08, 0x04, 0x02,// / 0x2F 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 0x30 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 0x31 0x42, 0x61, 0x51, 0x49, 0x46,// 2 0x32 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 0x33 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 0x34 0x27, 0x45, 0x45, 0x45, 0x39,// 5 0x35 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 0x36 0x01, 0x71, 0x09, 0x05, 0x03,// 7 0x37 0x36, 0x49, 0x49, 0x49, 0x36,// 8 0x38 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 0x39 0x00, 0x36, 0x36, 0x00, 0x00,// : 0x3A 0x00, 0x56, 0x36, 0x00, 0x00,// ; 0x3B 0x00, 0x08, 0x14, 0x22, 0x41,// < 0x3C 0x14, 0x14, 0x14, 0x14, 0x14,// = 0x3D 0x41, 0x22, 0x14, 0x08, 0x00,// > 0x3E 0x02, 0x01, 0x51, 0x09, 0x06,// ? 0x3F 0x32, 0x49, 0x79, 0x41, 0x3E,// @ 0x40 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 0x41 0x7F, 0x49, 0x49, 0x49, 0x36,// B 0x42 0x3E, 0x41, 0x41, 0x41, 0x22,// C 0x43 0x7F, 0x41, 0x41, 0x22, 0x1C,// D 0x44 0x7F, 0x49, 0x49, 0x49, 0x41,// E 0x45 0x7F, 0x09, 0x09, 0x01, 0x01,// F 0x46 0x3E, 0x41, 0x41, 0x51, 0x32,// G 0x47 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 0x48 0x00, 0x41, 0x7F, 0x41, 0x00,// I 0x49 0x20, 0x40, 0x41, 0x3F, 0x01,// J 0x4A 0x7F, 0x08, 0x14, 0x22, 0x41,// K 0x4B 0x7F, 0x40, 0x40, 0x40, 0x40,// L 0x4C 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 0x4D 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 0x4E 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 0x4F 0x7F, 0x09, 0x09, 0x09, 0x06,// P 0x50 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 0x51 0x7F, 0x09, 0x19, 0x29, 0x46,// R 0x52 0x46, 0x49, 0x49, 0x49, 0x31,// S 0x53 0x01, 0x01, 0x7F, 0x01, 0x01,// T 0x54 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 0x55 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 0x56 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 0x57 0x63, 0x14, 0x08, 0x14, 0x63,// X 0x58 0x03, 0x04, 0x78, 0x04, 0x03,// Y 0x59 0x61, 0x51, 0x49, 0x45, 0x43,// Z 0x5A 0x00, 0x00, 0x7F, 0x41, 0x41,// [ 0x5B 0x02, 0x04, 0x08, 0x10, 0x20,// "\" 0x5C 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 0x5D 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 0x5E 0x40, 0x40, 0x40, 0x40, 0x40,// _ 0x5F 0x00, 0x01, 0x02, 0x04, 0x00,// ` 0x60 0x20, 0x54, 0x54, 0x54, 0x78,// a 0x61 0x7F, 0x48, 0x44, 0x44, 0x38,// b 0x62 0x38, 0x44, 0x44, 0x44, 0x20,// c 0x63 0x38, 0x44, 0x44, 0x48, 0x7F,// d 0x64 0x38, 0x54, 0x54, 0x54, 0x18,// e 0x65 0x08, 0x7E, 0x09, 0x01, 0x02,// f 0x66 0x08, 0x14, 0x54, 0x54, 0x3C,// g 0x67 0x7F, 0x08, 0x04, 0x04, 0x78,// h 0x68 0x00, 0x44, 0x7D, 0x40, 0x00,// i 0x69 0x20, 0x40, 0x44, 0x3D, 0x00,// j 0x6A 0x00, 0x7F, 0x10, 0x28, 0x44,// k 0x6B 0x00, 0x41, 0x7F, 0x40, 0x00,// l 0x6C 0x7C, 0x04, 0x18, 0x04, 0x78,// m 0x6D 0x7C, 0x08, 0x04, 0x04, 0x78,// n 0x6E 0x38, 0x44, 0x44, 0x44, 0x38,// o 0x6F 0x7C, 0x14, 0x14, 0x14, 0x08,// p 0x70 0x08, 0x14, 0x14, 0x18, 0x7C,// q 0x71 0x7C, 0x08, 0x04, 0x04, 0x08,// r 0x72 0x48, 0x54, 0x54, 0x54, 0x20,// s 0x73 0x04, 0x3F, 0x44, 0x40, 0x20,// t 0x74 0x3C, 0x40, 0x40, 0x20, 0x7C,// u 0x75 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 0x76 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 0x77 0x44, 0x28, 0x10, 0x28, 0x44,// x 0x78 0x0C, 0x50, 0x50, 0x50, 0x3C,// y 0x79 0x44, 0x64, 0x54, 0x4C, 0x44,// z 0x7A 0x00, 0x08, 0x36, 0x41, 0x00,// { 0x7B 0x00, 0x00, 0x7F, 0x00, 0x00,// | 0x7C 0x00, 0x41, 0x36, 0x08, 0x00,// } 0x7D 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 0x7E 0x08, 0x1C, 0x2A, 0x08, 0x08, // <- 0x7F 0x7C, 0x14, 0x14, 0x14, 0x08,//p 0x80 0x38, 0x44, 0x44, 0x44, 0x20,//c 0x81 0x04, 0x04, 0x7c, 0x04, 0x04,//т 0x82 0x0C, 0x50, 0x50, 0x50, 0x3C,//у 0x83 0x30, 0x48, 0xfc, 0x48, 0x30,//ф 0x84 0x44, 0x28, 0x10, 0x28, 0x44,//x 0x85 0x7c, 0x40, 0x40, 0x40, 0xfc,//ц 0x86 0x0c, 0x10, 0x10, 0x10, 0x7c,//ч 0x87 0x7c, 0x40, 0x7c, 0x40, 0x7c,//ш 0x88 0x7c, 0x40, 0x7c, 0x40, 0xfc,//щ 0x89 0x04, 0x7c, 0x50, 0x50, 0x20,//ъ 0x8A 0x7c, 0x50, 0x50, 0x20, 0x7c,//ы 0x8B 0x7c, 0x50, 0x50, 0x20, 0x00,//ь 0x8C 0x28, 0x44, 0x54, 0x54, 0x38,//э 0x8D 0x7c, 0x10, 0x38, 0x44, 0x38,//ю 0x8E 0x08, 0x54, 0x34, 0x14, 0x7c,//я 0x8F 0x7e, 0x11, 0x11, 0x11, 0x7e,//A 0x90 0x7f, 0x49, 0x49, 0x49, 0x33,//Б 0x91 0x7f, 0x49, 0x49, 0x49, 0x36,//В 0x92 0x7f, 0x01, 0x01, 0x01, 0x03,//Г 0x93 0xe0, 0x51, 0x4f, 0x41, 0xff,//Д 0x94 0x7f, 0x49, 0x49, 0x49, 0x41,//E 0x95 0x77, 0x08, 0x7f, 0x08, 0x77,//Ж 0x96 0x41, 0x49, 0x49, 0x49, 0x36,//З 0x97 0x7f, 0x10, 0x08, 0x04, 0x7f,//И 0x98 0x7c, 0x21, 0x12, 0x09, 0x7c,//Й 0x99 0x7f, 0x08, 0x14, 0x22, 0x41,//K 0x9A 0x20, 0x41, 0x3f, 0x01, 0x7f,//Л 0x9B 0x7f, 0x02, 0x0c, 0x02, 0x7f,//M 0x9C 0x7f, 0x08, 0x08, 0x08, 0x7f,//H 0x9D 0x3e, 0x41, 0x41, 0x41, 0x3e,//O 0x9E 0x7f, 0x01, 0x01, 0x01, 0x7f,//П 0x9F 0x7f, 0x09, 0x09, 0x09, 0x06,//P 0xA0 0x3e, 0x41, 0x41, 0x41, 0x22,//C 0xA1 0x01, 0x01, 0x7f, 0x01, 0x01,//T 0xA2 0x47, 0x28, 0x10, 0x08, 0x07,//У 0xA3 0x1c, 0x22, 0x7f, 0x22, 0x1c,//Ф 0xA4 0x63, 0x14, 0x08, 0x14, 0x63,//X 0xA5 0x7f, 0x40, 0x40, 0x40, 0xff,//Ц 0xA6 0x07, 0x08, 0x08, 0x08, 0x7f,//Ч 0xA7 0x7f, 0x40, 0x7f, 0x40, 0x7f,//Ш 0xA8 0x7f, 0x40, 0x7f, 0x40, 0xff,//Щ 0xA9 0x01, 0x7f, 0x48, 0x48, 0x30,//Ъ 0xAA 0x7f, 0x48, 0x30, 0x00, 0x7f,//Ы 0xAB 0x00, 0x7f, 0x48, 0x48, 0x30,//Э 0xAC 0x22, 0x41, 0x49, 0x49, 0x3e,//Ь 0xAD 0x7f, 0x08, 0x3e, 0x41, 0x3e,//Ю 0xAE 0x46, 0x29, 0x19, 0x09, 0x7f,//Я 0xAF 0x20, 0x54, 0x54, 0x54, 0x78,//a 0xB0 0x3c, 0x4a, 0x4a, 0x49, 0x31,//б 0xB1 0x7c, 0x54, 0x54, 0x28, 0x00,//в 0xB2 0x7c, 0x04, 0x04, 0x04, 0x0c,//г 0xB3 0xe0, 0x54, 0x4c, 0x44, 0xfc,//д 0xB4 0x38, 0x54, 0x54, 0x54, 0x18,//e 0xB5 0x6c, 0x10, 0x7c, 0x10, 0x6c,//ж 0xB6 0x44, 0x44, 0x54, 0x54, 0x28,//з 0xB7 0x7c, 0x20, 0x10, 0x08, 0x7c,//и 0xB8 0x7c, 0x41, 0x22, 0x11, 0x7c,//й 0xB9 0x7c, 0x10, 0x28, 0x44, 0x00,//к 0xBA 0x20, 0x44, 0x3c, 0x04, 0x7c,//л 0xBB 0x7c, 0x08, 0x10, 0x08, 0x7c,//м 0xBC 0x7c, 0x10, 0x10, 0x10, 0x7c,//н 0xBD 0x38, 0x44, 0x44, 0x44, 0x38,//o 0xBE 0x7c, 0x04, 0x04, 0x04, 0x7c,//п 0xBF }; #endif // FONT5X7_HПолагаю, разногласия по библиотекам могут быть (и очень даже бывают) изза того, что они (библиотеки), к сожалению, бывают в двух местах (а если добавлен ещё и "stm32duino" блок, то и в трёх). За этим надо следить. При чём, если соглашатся на авто апдейты библиотек, то там опять не факт куда пойдёт новая версия. Я, если не уверен, что творитса с библиотеками, откладываю в сторонку все нужные библиотекти, снимаю софт Arduino, стираю вручную Program Files (x86)/Arduino, AppData/Local/Arduino(XX), Documents/Arduino, ну и ставим по новой, и следим где держть библиотеки.
Скачайте весь пакет ардуины arduino-1.6.5-r5 там ЕСТЬ русский glcdfont.c я его выкладывал пост 2351.
Вот еще раз из того архива Adafruit_GFX_Library - glcdfont.c
Да, но толку от шрифта если библа нормально кирилицу не хавает. Для этого и есть функция utf8rus. Я ее встаривал во все функции адафруита где выводится текст. Но надоело.
Ладно. Больше не будем отвлекаться и мусорить. Готовый пакет есть и этого хватит.
Ну вроде получилось, сейчас сам выбирает осциллограф в меню, все настройки в EEPROM, коэффициент делителя и коэффициент заполнения показует и главное работоспособен.Скрин вот:
Крутотень
А остальной функционал на месте.
О скетче, схеме и библах, будем мечтать.
Ну вроде получилось, сейчас сам выбирает осциллограф в меню, все настройки в EEPROM, коэффициент делителя и коэффициент заполнения показует и главное работоспособен.Скрин вот:
приколько получилось, не поделитесь исходниками?)приехал сегодня дисплей 5110 думаю маленький ослик еще сделать
Ну адаптировал скетч под экран без выкрутасов, у меня сами видете как,поэтому не проверял, если что подправить не сложно,кратенько-при первом запуске пишет в eeprom настройки и по адресу 0 eeprom,запоминает что уже запускался,поэтому если в ячейке 1 то нужно комментировать строки 85 и 93 запустить и после опять запрограммировать исходник, A1 - контакт управления подсветкой, все остальное стандартно, коэффициент заполнения считывается при появлении импульсов затем просто переписывается без подсчета пока не исчезнет сигнал и появится вновь.
zz11ss Спасибо
Скетч скомпилировался без проблем. IDE Arduino 1.8.1.
Используем библиотеку EEPROM версии 2.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM
Используем библиотеку Adafruit_GFX_Library версии 1.0.2 из папки: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_GFX_Library
Используем библиотеку Adafruit-PCD8544-Nokia-5110-LCD-library-master версии 1.0.1 из папки: C:\Users\Admin\Documents\Arduino\libraries\Adafruit-PCD8544-Nokia-5110-LCD-library-master
Используем библиотеку SPI версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
Используем библиотеку FreqCount версии 1.2 из папки: C:\Users\Admin\Documents\Arduino\libraries\FreqCount
Используем библиотеку PWM в папке: C:\Users\Admin\Documents\Arduino\libraries\PWM (legacy)
Используем библиотеку CyberLib в папке: C:\Users\Admin\Documents\Arduino\libraries\CyberLib (legacy)
Скетч использует 18638 байт (57%) памяти устройства. Всего доступно 32256 байт.
Т.е. в реальном времени если шим меняет скважность, ослик это не покажет в процентах ?
воткнул наконец в корпус, пока не все доделано, нет всех переключателей, делители и т д
Поздравляю с закорпусованностью! :) Может, для однозначности, можете подписать, с какого поста там прошивка, ни может ещё какие важности. Знаете как, многие могут с конце ветку читать, ит.п. :) Спасибо!
Поздравляю с закорпусованностью! :) Может, для однозначности, можете подписать, с какого поста там прошивка, ни может ещё какие важности. Знаете как, многие могут с конце ветку читать, ит.п. :) Спасибо!
#1443 вот тут скетч помоему,важностей нет вроде никаких))) вместо схемы отключения пока что сделана кнопка на А1 массу подает, тем самым ребутает дисплей, в наличии просто нет pnp транзисторов=)
На ssd1306 есть версия пультоскопа?
Версия для OLED 128x64 SSD1306. I2C, есть на страничке автора http://srukami.inf.ua/pultoscop_v25110.html
Скетч под OLED 128*64 дисплей доработана форумчанином D.I.M Видео работы
Только версия без dds генератора и uart приемника...
Да, другой версии вроде нет.
Могу изобразить, если кому-нибудь это надо вообще..
Полную версию пультоскопа на OLED 128x64 SSD1306. I2C очень надо, как раз сть 1.3", на 0.96" собирал версию от . D.I.M.
Понял. Будут новости - тут сообщу.
Еще летом собрал пультоскоп.
вот видео, если кому интересно https://youtu.be/5tGoBKO_CR8
Для себя изменил:
Автоматическое отключение при достижении напряжения питания ниже 2,8в.
Подача двойного звукового сигнала каждые 10 минут (таблетка от забывчивости).
Установка через меню состояния подсветки постоянно ВКЛ или выкл через установленное время.(дискретность 5сек)
Установка через меню опорного напряжения.
Установка через меню контрастности дисплея.
Установка через меню звукового сопровождение нажатие клавиш.
В пультоскопе: запоминание значений развертки, уровня синхронизации.
В генераторе: запоминание значений скважности, частоты, выбранного множителя частоты.
В терминале: выбор скорости терминала через кейсы от 300 бод до 256000 бод, запоминание значения.
Пультоскоп считаю очень удобным. Спасибо автору за идею и код!
Еще летом собрал пультоскоп....
Уважаемый flachnn, было бы здорово, если были бы доступны Ваши вариант скетча, плата. Если у Вас нет каких соображений против того. Заранее Спасибо!
Да, конечно... Я дописывал скейтч еще летом, на прототипе, и вот что-то найти не могу... Неакуратно отношусь к наработкам :)
В крайнем случае, перепишу по новой и опубликую здесь.
Схема как у автора, единственно добавил схему преобразователя на MC34063 и делители. А так же закрыл входы осцила и терминала стабилитронами на 5,1В.
По поводу стабилитронов, не лучшее решение, но качесвто эпюры меня не сильно интересует, а вот паленые порты сильно. Ткнул в генератор авто, а делитель не переключил :)
Так же бывает, что нужно посмотреть в терминале, а логические уровни выше 5 вольт. Стабилитроны спасали уже :)
Здравствуйте,flachnn можете поделиться печаткой,заранее благодарю.
flachnn можете поделиться печаткой
Здравствуйте, можно конечно. https://yadi.sk/d/mOTHIJ7539zvzp
Забыл сказать, в схему добавлена зарядка от USB на ТС4056 :)
Но по чесноку, если бы я разводил по новой, то так плотно бы не стал, решил текстолит экономить. :)
Собрать собрал, но монтаж получился плотный.
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS, выбор пал на dso138 но после того как почитал и посмотрел понял что он мягко говоря, не очень. Наткнулся на Пультоскоп который как я понял лучше и дешевле вышеупомянутого китайца Захотел собрать и тут разные версии с разными конфигурациями дисплеев под которые нужны свои драйвера. Ниже составил смету для сборки данного осцилографа. Просьба к форумчанам подскажите исходя из вашего опыта, может какие то детали плохо работают или есть какие то подводные камни при работе с ними или что то неучел. Спасибо
Основные
1х Arduino Uno или Pro Mini
1x Дисплей 2,4'' TFT LCD 240х320 (читал есть версии которые медленно обновляют дисплей)
4x Кнопки
1x старый аккумулятор 3,5 в
Дополнительные
1x BNC разьем
1x BNC коннектор если щупы будут самодельные
1x корпус можно и самодельный
1x модуль для зарядки li-ion
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS, выбор пал на dso138 но после того как почитал и посмотрел понял что он мягко говоря, не очень. Наткнулся на Пультоскоп который как я понял лучше и дешевле вышеупомянутого китайца Захотел собрать и тут разные версии с разными конфигурациями дисплеев под которые нужны свои драйвера. Ниже составил смету для сборки данного осцилографа. Просьба к форумчанам подскажите исходя из вашего опыта, может какие то детали плохо работают или есть какие то подводные камни при работе с ними или что то неучел. Спасибо
Основные
1х Arduino Uno или Pro Mini
1x Дисплей 2,4'' TFT LCD 240х320 (читал есть версии которые медленно обновляют дисплей)
4x Кнопки
1x старый аккумулятор 3,5 в
Дополнительные
1x BNC разьем
1x BNC коннектор если щупы будут самодельные
1x корпус можно и самодельный
1x модуль для зарядки li-ion
Как бы я не любил свою разработку но Пультоскоп медленнее медленнее чем DSO dso138
Вот данные
dso138 скорость АЦП 1МSp/s
Пультоскоп база скорость АЦП 0,32МSp/s
Пультоскоп разгон(27Мгц) скорость АЦП 0,6МSp/s
Просто чтоб потом не разочаровались.
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS,
Для таких задач вам нужно осциллограф с полосой не менее 100МГц . Это не начального уровня, это могуть быть младшие модели профессионального уровня, >= 1000 $
Добрый день, возникла необходимость в осцилографе начального уровня,для проверки работоспособности кварцевого резонатора на МП и флешек памяти BIOS,
Для таких задач вам нужно осциллограф с полосой не менее 100МГц . Это не начального уровня, это могуть быть младшие модели профессионального уровня, >= 1000 $
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
Почему 4 ? Считают же исходя из скорострельности АЦП. Например у моего осциллографа полоса 300Mhz, а выборка 2 GSample/sec, соответссно количество точек будет 2E9/24E6= ~83 точки. А по вашей методике получилось бы лишь 300/24 = ~12 точек :)
А я тоже как-то не туда. МП 24МГц кварц! 100МГц - это только 4 точки на такт, а если кварц загналс. то там такое может быть...
Почему 4 ? Считают же исходя из скорострельности АЦП. Например у моего осциллографа полоса 300Mhz, а выборка 2 GSample/sec, соответссно количество точек будет 2E9/24E6= ~83 точки. А по вашей методике получилось бы лишь 300/24 = ~12 точек :)
Вот эти вот полосы и выборки... Я все время их путаю )
Значит, все - таки лучше купить китайца в сборе, чем собирать на ардуине? А осциллограф хамелеон намного мощнее dsoO62? Осц 062 не сильно по цене отличается от 138, можно его взять так как на хамелеон экранчик не найти. П.С. Делать точные расчеты с помощью осциллографа не собираюсь, нужно лишь для диагностики МП, то есть на уровне сигнал идет , значит МП не заводится не из за плохого кварца, ремонт МП не является основной работой, просто интересно в них ковырятьсч
Предлагаю Вам купить 2 десятка кварцев и не любить людям мозг. Нельзя на подобном пробнике увидеть работу ваших кварцев.
Я видео снял на эту тему.
Там статья еще есть под видео,
может поможет.
а логгер ни кто не пытался прикрутить к осцилографу или терминалу? былобы очень удобно.
а логгер ни кто не пытался прикрутить к осцилографу или терминалу? былобы очень удобно.
Растолкуйте что конкретно логгировать?
состояние цифрового пина или аналоговый сигнал? или еще что?
Я думаю следует логировать аналоговый сигнал . места занимает конечно больше но универсальней. к тому-же 328 позволяет использовать SD более 2Г. а затем просматривать на экране. идей много. Жаль я позно включился в микроконтролерную тему. есть идея вывести на внешний разьем SPI шину + питание, и легко без разбора корпуса можно перепрошить и подключать модули общающиеся через SPI. так-же при надобности на вход прикрутить доп. усилитель или делитель. мне по работе нужно и токовый (0-5ма) проверить и ИРПС и RS232 и RS485, частоту и амплитуду сигнала. так-же нужен источник напряжения от 0 до 50 мВ с возможностью атоматичаского повышения и понижения уровня (ГКЧ только очень медленный 1 мин на период - приблизительно).я все это конечно реализую со временим и выложу только разберусь с нормальной IDE и С++ - родная оболочка полный отстой ( в далекой молодости лет 10 писал на Clipper базы данных (под DOS) и лет 5 занимался 1С-бухгалтерия, да и сыну в этом году помогал писать диплом для технаря на PHP (фреймворки , классы - пришлось поработать мозгами, но опыт не пропьешь). сейчас в основном для работы Excel использую но VB не лезу. а тут такая возможность для творчества . класный проект! молодцы.
пока в процесе изготовления. уже переделал под дисплей Nokia 5200 (развернуты буквы, изображение), и сейчас собираю модульный вариант на 5110 для отработки требуемых мне функций. сейчас разберусь как на форуме фотки прикручивать и выложу парочку