.....Читал что для дисплея от S65 линии связи тоже через делитель надо заводить на пины мк
У меня в Хамелионе через делитель управляется, очень быстрый и классный дтсплей!!!
а не подскажете у вас печатка односторонняя? или нет, хочу хамелеон собрать но пока ищу инфу, нашел только двустороннюю плату но не хотелось бы ее делать, буду благодарен если подскажете откуда вы брали печатную плату и схему
а не подскажете у вас печатка односторонняя? или нет, хочу хамелеон собрать но пока ищу инфу, нашел только двустороннюю плату но не хотелось бы ее делать, буду благодарен если подскажете откуда вы брали печатную плату и схему
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
а не подскажете у вас печатка односторонняя? или нет, хочу хамелеон собрать но пока ищу инфу, нашел только двустороннюю плату но не хотелось бы ее делать, буду благодарен если подскажете откуда вы брали печатную плату и схему
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
окей, дома буду скину, а то на память не помню, спасибо.
а не подскажете у вас печатка односторонняя? или нет, хочу хамелеон собрать но пока ищу инфу, нашел только двустороннюю плату но не хотелось бы ее делать, буду благодарен если подскажете откуда вы брали печатную плату и схему
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
Остаётся только воткнуть ардуино мини на 3,3в 8мгц и приладить скетч. Получается "народный" осциллограф :)))
прикольно, но есть "но":
1. ждать пока придёт покупка, а значит проект "замерзает".
2. 8МГц... в Пультоскопе ценность в высокой частоте.
3. сам экран мелкий, не смотря на разрешение.
4. размер корпуса: 4,8 х 3 х 1,5 см мал даже для самодельной платы(не Ардуино). а ведь надо впихнуть МК, контроллер лития, повышалку до 5В, ОУ и обвязку всего этого.
для сравнения моей платы на ней разместил прямоугольник размером как корпус(в реальности надо меньше) желтого цвета.
как вариант, переход на размер деталей 0603(про 04 молчу), контроллер лития 4057, и двухсторонний монтаж.
в общем, ХЗ... хотя если автор(или ктонить) возьмётся адаптировать проект, попробую развести плату в таком размере.
но опять же, пока не придёт сам девайс(что б разобрать его) проект "замерзает".
То есть не меняя схемы подключения экрана предыдущей версии должно работать (предыдущая прошивка работает нормально)
Спасибо буду разбираться.
Схему подключения не следует менять даже если было-бы не как у меня, менять нужно номера пинов в скобочках, ведь куда проще пару цыфр местами переставить чем провода паять. У меня просто эти экраны на разных приборах поразному подключены сам иногда с картинкой сверяюсь)))
Значит старая была свежее чем я думал при сьемке видео))))
Там фильтр для DDS сделал самый простецкий кому нужно более гладкая поверхность синуса легко решается, даже я абсольтный профан в аналоговой технике собирал более сложный фильтр для пробы с парой кондеров и индуктивностью и резисторами, получалась линия гладкая как яйцо.
Но не захотел усложнять прибор для новичков, а спецы себе и так добавят что нужно.
Про фильтр для DDS на видео видел и на схеме тоже.
Просто сперва решал свою проблему с подключением экрана на своей старой схеме.
А ваш вариант более сложного фильтра для пробы с парой кондеров и индуктивностью и резисторами новичкам был бы очень полезен.
bodriy2014 - и еще просьба нет ли у вас схем делителей к данному прибору так как стандартные делители не совсем корректно работают или это надо делать еще и программно в скетче, подскажите, научите как.
Про фильтр для DDS на видео видел и на схеме тоже.
Просто сперва решал свою проблему с подключением экрана на своей старой схеме.
А ваш вариант более сложного фильтра для пробы с парой кондеров и индуктивностью и резисторами новичкам был бы очень полезен.
bodriy2014 - и еще просьба нет ли у вас схем делителей к данному прибору так как стандартные делители не совсем корректно работают или это надо делать еще и программно в скетче, подскажите, научите как.
--фильтр собирал по такой схеме, на макетке и детали подбирал из тех что в коробке были не расчитывал, поэтому номиналы подбирайте сами.
--Это из-за внутренних связей, делителей мне не нужно поэтому не подбирал. Но я в таких случаях советую идти от обратного, цепляйте подстроечник на 50КОм на крайние ноги входное и землю, на центральной выставляете 5В поворачивая. Затем подключаете к МК через 10КОм на всякий случай и смотрите падение и подкручиваете, после того как выставили нужный делитель меряете что получилось на подстроечнике и заменяете на постоянные. Метод топорный но не подводит.
bodriy2014 - спасибо за разъяснения по фильтру и делителям.
Тут у меня еще одна проблема прошу помощи. Пытаясь перевести новую версию скетча под старую схему так как некоторые сделали печатку подскажите как перевести А3 на старое место А4. С кнопками я понял перенос невозможен легким способом одну придется переносить (перепаивать) с D10 на D13 остальным двум присвоить старое назначение.
Измененный скетч
//Страница проэкта 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 (не менять)
//#################№№№№№№####пользовательские настройки
int d=0;
#define power 8 //пин который опрашивает кнопку включения
#define OFF 14//пин который управляет ключем питания
#define timepowerON 50 //время удержания кнопки выключения
#define levo 13 //кнопка ЛЕВО(можно любой пин)
#define ok 11 //кнопка ОК(можно любой пин)
#define pravo 12 //кнопка ПРАВО(можно любой пин)
#define akb A2 //любой своюодный аналоговый пин для измерения напряжения АКБ
#define overclock 16 //Частота на которой работает Ардуино
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7);//пины к которым у вас подключен дисплей
byte cont=75;//контрастность дисплея
byte SinU=30; //уровень синхронизации 0 до 255
int PWM = 128;//стартовое значение ШИМ от 0 до 255
int32_t frequency = 500; //стартовое значение частоты в Гц
float VCC=5.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[256];
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; //скорость терминала
void setup(){
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(byte i=0;i<255;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
delayMicroseconds(500);
mass[i]=ADCH;
}
}
if (razv>0){
for(byte i=0;i<255;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];} }
//максимальное значение сигнала##########################
//#######################################определение точки синхронизации
//#######################################отрисовка графика
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-1, BLACK);
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7-1, BLACK);
}
sinhMASS=0;
//#######################################отрисовка графика
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){Zamer();}
if(digitalRead(pravo)==HIGH){Zamer();}
}
if(menu==3){
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-3;
if(PWM<0){PWM=255;}
delay(3);//защита от дребезга
}
if(digitalRead(pravo)==HIGH){
PWM=PWM+3;
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/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/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
bodriy2014 - спасибо за разъяснения по фильтру и делителям.
Тут у меня еще одна проблема прошу помощи. Пытаясь перевести новую версию скетча под старую схему так как некоторые сделали печатку подскажите как перевести А3 на старое место А4. С кнопками я понял перенос невозможен легким способом одну придется переносить (перепаивать) с D10 на D13 остальным двум присвоить старое назначение.
Все вы правильно сделали, эти строки определяют вход АЦП
bodriy2014 Спасибо – теперь все понятно что надо делать, просто я не ардуинщик и не программист и собирать в железе устройство глядя на скетч а не на схему и менять что-то на ходу не могу, приходится сперва брать или рисовать схему а только потом собирать, да и не я только так делаю, нас таких еще много.
bodriy2014,Здравствуйте! Помогите пожалуйста с кодом? Пультоскоп с TFT-моргание графика убрали,за что спасибо вам большое! Но в следующей версии вы добавили меню с синхронизацией. Можно ли как то совместить чтобы и моргпние графика не было и синхронизация была? У меня никак не получается. Или синхр.работает но с морганием,или график стабильно,но синхронизация накладывается! За ранее спасибо! Отрез кода прилагаю
bodriy2014,Здравствуйте! Помогите пожалуйста с кодом? Пультоскоп с TFT-моргание графика убрали,за что спасибо вам большое! Но в следующей версии вы добавили меню с синхронизацией. Можно ли как то совместить чтобы и моргпние графика не было и синхронизация была? У меня никак не получается. Или синхр.работает но с морганием,или график стабильно,но синхронизация накладывается! За ранее спасибо! Отрез кода прилагаю
У меня в Хамелионе через делитель управляется, очень быстрый и классный дтсплей!!!
а не подскажете у вас печатка односторонняя? или нет, хочу хамелеон собрать но пока ищу инфу, нашел только двустороннюю плату но не хотелось бы ее делать, буду благодарен если подскажете откуда вы брали печатную плату и схему
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
окей, дома буду скину, а то на память не помню, спасибо.
Подскажите.
Буду возле магазина стоит покупать на будущее для пультоскопа такой ацп http://www.kosmodrom.com.ua/el.php?name=AD9280ARSZRL
или нужно что то покруче ???????????
Подскажите.
Буду возле магазина стоит покупать на будущее для пультоскопа такой ацп http://www.kosmodrom.com.ua/el.php?name=AD9280ARSZRL
или нужно что то покруче ???????????
Куда круче?)))
Частота захвата сигнала32 МГц -AD9280
Нам бы и 15МГц хватило, но не нашел такого.
Тогда куплю.
Или где то есть дешевле ?
Буду жать новой версии.
Если нужно, дайте мыло скину весь архив по которому я делал, но у меня двусторонняя.
sasha.xumuk2016@yandex.ru
Тогда куплю.
Или где то есть дешевле ?
Буду жать новой версии.
Выслал.
Joiner по твоей ссылке дороже еще и месяц жди!))
Выслал.
Joiner по твоей ссылке дороже еще и месяц жди!))
P.S. Ради интереса посчитал. По Вашей ссылке цена 66.25 ГРН. В рублях 66.25 * 2.78 = 184.17руб
По моей ссылке 2 шт. стоят 218руб, одна штука получается 109руб. Получается вроде как дешевле :)
Выслал.
спасибо!
P.S. Ради интереса посчитал. По Вашей ссылке цена 66.25 ГРН. В рублях 66.25 * 2.78 = 184.17руб
По моей ссылке 2 шт. стоят 218руб, одна штука получается 109руб. Получается вроде как дешевле :)
А так там два?, извини недоглядел.
Ты прав!
ого! уже АЦП фигурирует?! о_О не испугаюсь и спрошу: это версия 3? =)
прикольно, но есть "но":
1. ждать пока придёт покупка, а значит проект "замерзает".
2. 8МГц... в Пультоскопе ценность в высокой частоте.
3. сам экран мелкий, не смотря на разрешение.
4. размер корпуса: 4,8 х 3 х 1,5 см мал даже для самодельной платы(не Ардуино). а ведь надо впихнуть МК, контроллер лития, повышалку до 5В, ОУ и обвязку всего этого.
для сравнения моей платы на ней разместил прямоугольник размером как корпус(в реальности надо меньше) желтого цвета.
как вариант, переход на размер деталей 0603(про 04 молчу), контроллер лития 4057, и двухсторонний монтаж.
в общем, ХЗ... хотя если автор(или ктонить) возьмётся адаптировать проект, попробую развести плату в таком размере.
но опять же, пока не придёт сам девайс(что б разобрать его) проект "замерзает".
а если двустороннюю сделать?) влезть должна
да мне коллега с соседнего форума прислал фото с размером.
думаю что пультоскоп влезет и на одностороннюю. просто размер самого экрана мелкий, а вот ТТ можно.
согласен смысла нет в таком мелком в корпусе экран не информативен
P.S. не знал куда написать, но не подскажете тут на форуме поиск есть?)) а то либо я дурак либо лыжи не едут)))
нету, как нет возможности общения через ЛС.
нету, как нет возможности общения через ЛС.
спасибо. Это печально(((
karl2233, как это нет поиска? В правом верхнем углу.
а точно, на работе прост блочит видать это окошко, не видно было
Добавил корпус и DDS генератор, для удобства размещаения изменил некоторые подключения смотрите или скетч или схему.
Кому не подходит измените, благо код открыт.
Вот видео
bodriy2014, привет. Где берешь такие "захватки"? Я спрашивал на местном р-рынке, нигде нет.
bodriy2014 – Спасибо за интересный многофункциональный приборчик, будем пробовать и надеяться на дальнейшее развитие и поддержку проекта от Вас.
Порадовало добавление в прибор Терминала!Давно подумывал такое сваять для мониторинга порта 232
bodriy2014, привет. Где берешь такие "захватки"? Я спрашивал на местном р-рынке, нигде нет.
Привет, у нас есть но очень дорого.
Купилил на Али у китайцев 50шт, искал как щупы.
Подскажите. PULTOSCOPE_LCD5110_final_DDS_Z.ino - IDE Arduino-1.6.8 - библиотеки установил, при компиляции ошибки.
Может не та версия IDE
Отпишитесь кто успешно скомпилировал какая версия и были ли ошибки.
Подскажите. PULTOSCOPE_LCD5110_final_DDS_Z.ino - IDE Arduino-1.6.8 - библиотеки установил, при компиляции ошибки.
Может не та версия IDE
Отпишитесь кто успешно скомпилировал какая версия и были ли ошибки.
У меня 1.6.5 портативная, если нужно могу на файлобменник выложить.
Хотя странно я менял только код, если старая компелировалась по чему эта нет?
Предыдущая PULTOSCOPE_LCD5110_final_2.ino - на IDE Arduino-1.6.8 компилируется успешно.
Попробую скачать и проверить на вашей версии.
Предыдущая PULTOSCOPE_LCD5110_final_2.ino - на IDE Arduino-1.6.8 компилируется успешно.
Попробую скачать и проверить на вашей версии.
А что пише, на что ругается?
http://pixs.ru/showimage/compill1jp_2058182_21066275.jpg
Проверил на IDE Arduino-1.6.5 скомпилировалось успешно.
IDE Arduino-1.6.8 ругается на ----
Вот ссылка на версию которой я компилировал,
там уже установленны все библиотеки, сама варсия портабл не требует установки.
Просто распаковать в отдельную папку на любом диске и запустить arduino.exe и открыть скетч.
bodriy2014 - спасибо, выше написал
bpl Добавлю этот ньюанс на страничку проекта, и ссылку на IDE.
У вас есть библиотеки для вывода текста на русском?
bodriy2014 – подскажите по подключению экрана
с предыдущей версией были какие либо изменения по пинам
5110 красный модуль
1 - RST --- D7
2 - CE --- D6
3 - DC --- D4
4 - DIN --- D3
5 - CLK --- D2
6 - VCC --- +3.3V (у вас на схеме +5V)
7 - LH --- GND
8 - GND --- GND
Правильно ли я подключаю D2---D7
новая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2)
предыдущая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7)
У меня при прошивки пустой экран – контрастность менял с 52 на 75.
У вас есть библиотеки для вывода текста на русском?
Привет. Кому вопрос?
Если мне, то у меня в скетче на русском, там и библиотека есть.
Так должно работать
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7)
То есть не меняя схемы подключения экрана предыдущей версии должно работать (предыдущая прошивка работает нормально)
Спасибо буду разбираться.
То есть не меняя схемы подключения экрана предыдущей версии должно работать (предыдущая прошивка работает нормально)
Спасибо буду разбираться.
Схему подключения не следует менять даже если было-бы не как у меня, менять нужно номера пинов в скобочках, ведь куда проще пару цыфр местами переставить чем провода паять. У меня просто эти экраны на разных приборах поразному подключены сам иногда с картинкой сверяюсь)))
Поменял в скетче строки местами.
новая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2)
предыдущая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7)
Все заработало на старой схеме, еще раз спасибо.
Для тех кто не хочет изменять скетч подключать в новой версии так.
5110 красный модуль
1 - RST --- D2
2 - CE --- D3
3 - DC --- D4
4 - DIN --- D6
5 - CLK --- D7
6 - VCC --- +3.3V
7 - LH --- GND
8 - GND --- GND
Поменял в скетче строки местами.
новая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2)
предыдущая версия
Adafruit_PCD8544 display = Adafruit_PCD8544(2, 3, 4, 6, 7)
Все заработало на старой схеме, еще раз спасибо.
Значит старая была свежее чем я думал при сьемке видео))))
Там фильтр для DDS сделал самый простецкий кому нужно более гладкая поверхность синуса легко решается, даже я абсольтный профан в аналоговой технике собирал более сложный фильтр для пробы с парой кондеров и индуктивностью и резисторами, получалась линия гладкая как яйцо.
Но не захотел усложнять прибор для новичков, а спецы себе и так добавят что нужно.
Про фильтр для DDS на видео видел и на схеме тоже.
Просто сперва решал свою проблему с подключением экрана на своей старой схеме.
А ваш вариант более сложного фильтра для пробы с парой кондеров и индуктивностью и резисторами новичкам был бы очень полезен.
bodriy2014 - и еще просьба нет ли у вас схем делителей к данному прибору так как стандартные делители не совсем корректно работают или это надо делать еще и программно в скетче, подскажите, научите как.
Про фильтр для DDS на видео видел и на схеме тоже.
Просто сперва решал свою проблему с подключением экрана на своей старой схеме.
А ваш вариант более сложного фильтра для пробы с парой кондеров и индуктивностью и резисторами новичкам был бы очень полезен.
bodriy2014 - и еще просьба нет ли у вас схем делителей к данному прибору так как стандартные делители не совсем корректно работают или это надо делать еще и программно в скетче, подскажите, научите как.
--фильтр собирал по такой схеме, на макетке и детали подбирал из тех что в коробке были не расчитывал, поэтому номиналы подбирайте сами.
--Это из-за внутренних связей, делителей мне не нужно поэтому не подбирал. Но я в таких случаях советую идти от обратного, цепляйте подстроечник на 50КОм на крайние ноги входное и землю, на центральной выставляете 5В поворачивая. Затем подключаете к МК через 10КОм на всякий случай и смотрите падение и подкручиваете, после того как выставили нужный делитель меряете что получилось на подстроечнике и заменяете на постоянные. Метод топорный но не подводит.
bodriy2014 - спасибо за разъяснения по фильтру и делителям.
Тут у меня еще одна проблема прошу помощи. Пытаясь перевести новую версию скетча под старую схему так как некоторые сделали печатку подскажите как перевести А3 на старое место А4. С кнопками я понял перенос невозможен легким способом одну придется переносить (перепаивать) с D10 на D13 остальным двум присвоить старое назначение.
Измененный скетч
bodriy2014 - спасибо за разъяснения по фильтру и делителям.
Тут у меня еще одна проблема прошу помощи. Пытаясь перевести новую версию скетча под старую схему так как некоторые сделали печатку подскажите как перевести А3 на старое место А4. С кнопками я понял перенос невозможен легким способом одну придется переносить (перепаивать) с D10 на D13 остальным двум присвоить старое назначение.
Все вы правильно сделали, эти строки определяют вход АЦП
вот на А3
if(opornoe==0){ADMUX = 0b11100011;}//выбор внутреннего опорного 1,1В
if(opornoe==1){ADMUX = 0b01100011;}//Выбор внешнего опорного
А так на А4
if(opornoe==0){ADMUX = 0b11100100;}//выбор внутреннего опорного 1,1В
if(opornoe==1){ADMUX = 0b01100100;}//Выбор внешнего опорного
bodriy2014 Спасибо – теперь все понятно что надо делать, просто я не ардуинщик и не программист и собирать в железе устройство глядя на скетч а не на схему и менять что-то на ходу не могу, приходится сперва брать или рисовать схему а только потом собирать, да и не я только так делаю, нас таких еще много.
bodriy2014,Здравствуйте! Помогите пожалуйста с кодом? Пультоскоп с TFT-моргание графика убрали,за что спасибо вам большое! Но в следующей версии вы добавили меню с синхронизацией. Можно ли как то совместить чтобы и моргпние графика не было и синхронизация была? У меня никак не получается. Или синхр.работает но с морганием,или график стабильно,но синхронизация накладывается! За ранее спасибо! Отрез кода прилагаю
Для тех кто делал печатку под пультоскоп 5110 для предыдущей версии переделал новую версию скетча.
перевел А3 на старое место А4. тоесть - закомментировал строки которые определяют вход АЦП на А3
добавил на А4
С кнопками перенос невозможен легким способом одну придется переносить (перепаивать) с D10 на D13 остальным двум присвоил старое назначение.
подключение экрана по старой схеме.
Измененный скетч
В работе сегодня проверить не успею. Спасибо за помощь.
bodriy2014,Здравствуйте! Помогите пожалуйста с кодом? Пультоскоп с TFT-моргание графика убрали,за что спасибо вам большое! Но в следующей версии вы добавили меню с синхронизацией. Можно ли как то совместить чтобы и моргпние графика не было и синхронизация была? У меня никак не получается. Или синхр.работает но с морганием,или график стабильно,но синхронизация накладывается! За ранее спасибо! Отрез кода прилагаю
У вас последний скетч с сайта?
я использовал за основу скетч с tft 2.4 ,а синхронизацию с последнего финального с 5110