Перелопатил весь интернет, нашел клавиатуру, которая нужна за 1700 р. Заплатил, оформил... На следующий день приходит реклама, предлагают на 800 р. дешевле...
Перелопатил весь интернет. Выбрал телевизор, который мне нужен. Заплатил 18000, получил. На следующий день захожу на сайт в тот же магазин, цена на это телевизор 16500 р.!!!!!!!!!!!!!!!
Вот так же и с осциллографом. Проклятие какое-то........
Вот так же и с осциллографом. Проклятие какое-то........
Покупаем телек. гарантия лучшей цены. 62 тысячи кажется. Грузим в машину и едем. По пути кент стоит, остановился кое-что перетереть. Ну тот типа довези, я ему что машина до талова телек купил, домой везу. Ну в общем слово за слова, он мне да вон магаз такой же теле 40 рублей. Я чуть не всрался. Туда, реально. 40 тысяч! Я волосы на попе рву, ща думаю сдам. И тут я понимаю что ценник висит не от 52'' панели, а от 40'', а сам телек 52''. Как я там наклал...
как говорит русская народная мудрость :" В умелых руках и член - балалайка". как мы раньше обходились одним стрелочным прибором? для того чтобы оценить форму звукового сигнала, наличие генерации, логический уровень - пультоскопа предостаточно. у меня осцил(С-67) дома и 2 на работе за 17 лет пользовался раз 10. а вот карманный требовался каждую неделю, но приходилось обходиться мультиметром.
как говорит русская народная мудрость :" В умелых руках и член - балалайка". как мы раньше обходились одним стрелочным прибором? для того чтобы оценить форму звукового сигнала, наличие генерации, логический уровень - пультоскопа предостаточно. у меня осцил(С-67) дома и 2 на работе за 17 лет пользовался раз 10. а вот карманный требовался каждую неделю, но приходилось обходиться мультиметром.
Ну во первых тогда техники такой не было. А так что была цифра... сейчас калькуляторы быстрее. По поводуосцила, то да. Но немного наоборот. Карманный он мне вообще не нужен. Он мне нужен настольный, но небольшой. И вообще и сам осцил нужен раз в пол года и то по заказу. По сему я бы спокойно обошелся и пультоскопом, но что-то мне подсказывает что не ровен час и когда его вообще не завести с китая. Тем более официально уже нельзя. Меня это и останавливает. Но китаец пишет что отправлять будет как "DYI, HOBBY, ELECTRONIC PARTS". Но сыкотно. Просто вдруг как жизнь повернется и завтра он пригодится. У меня есть возможность практически круглосуточно получать доступ к осцилу, но так не охота ехать туда. Ибо потом за одно обращение и то я сам все сделаю прийдется отрабатывать очередной загашеный бабами ноут и т.д. Вот и думаю Вроде бы 13- не великие деньги и я могу позволить хоть сейчас, но с другой стороны если и буду в ближайший месяц епго использовать, то на 1/100 его возможностей. Но купить скажем тот же DSO за 6 тысяч и через 2 года кусать локти что сжалил каких-то 6-8 тысяч... сам понимаешь.
Надо брать. Спросите у dimax_а. Деньги истратил и забыл, а осциллограф будет радовать всю оставшуюся жизнь.
Наличие 2-х каналов и неплохие характеристики дают огромные возможности для исследования любого электронного устройства. У меня на данный момент есть осциллограф ОМЛ-2М. Поигрался, понравилось, но захотелось чего-то покруче. Решил, что Hantek смогу себе позволить. Только что-то долго идет....
А пультоскоп вполне себе хороший карманный пробник и во многих ситуациях будет даже очень удобен. В планах есть желание повторить эту конструкцию. Тем более если всетаки будет нормальный осциллограф, то с ним будет легче настроить и проверить пультоскоп :)
както раз навесу собрал пультоскоп, так нужно было сигнал померить, все заработало, автору огромный респект! На экранчике fruit собирал (вроде так называется, цветной такой). И успел увидеть там генератор сигнала. Настраивается как помнится freq и duty. Так вот сейчас нужно на работе по зарез по быстрому простите из говна и палочек собрать станцию для проверки бензиновых топливных форсунок для автомобилей. Программирую плохо, поэтому долго мне самому программу писать, потом настраивать её. Подумал, что можно использовать генератор сигнала от пультоскопа. Только одно но, необходимо отключать генератор по прошествию например определённого времени (нескольких сек), ну или определённого количества импульсов. Помогите решить такую задачу, если не сложно это (а то начнут щас).
Так вот сейчас нужно на работе по зарез по быстрому простите из говна и палочек собрать станцию для проверки бензиновых топливных форсунок для автомобилей.
Господа, извините за флуд не по теме, больше не буду.
MaksVV, не надо забивать микроскопом гвозди. самое отличное решение
Сделал временно, R=4.7кОм вставил в разрыв сигнальных проводов. То запускается, то нет, мож думаю провода длинные и контакты. Спаял переходную платку с SMD резюками R=10kOm, как советуют на скрине, думаю хуже не будет
Подключаю - белый экран. Так понял сигнала мощи не хватае, взял напрямую подсоединил - работает.
Может на шлейфе эти резюки уже напаяны?
Arduino Nano (usb 340) , питание с usb, через диод 5В->4,6В (на VCC). Замерил ток на pin Reset дисплея
без R R=10KoM
Reset 0,37mA 0,11mA
Там где скейч и схема есть, вроде как автор не ставил их вообще.
Пока так :) напрямую, без резюков, вроде ток мизирный и U=4.6В(диод шоттки на Nano). Еще кнопки переделаю на землю
P.S. Может кому пригодитьcя, код по ссылке от 240265 на дисплей ST7735 подредактировал под кнопки на GND без резисторов, вроде на всех режимах нормально срабатывают:
//страничка проекта <a href="http://srukami.inf.ua/pultoscop_v2.html" rel="nofollow">http://srukami.inf.ua/pultoscop_v2.html</a>
// форум <a href="http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=12#comment-175783" rel="nofollow">http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=12#comment-175783</a>
// скетч и библиотеку изменил под LCD_ls020 VetalST
// скетч и библиотеку изменил под LCD 1.8 дюйма 160х128 ST7735 Владимир Иванов ( 240265 )
// LCD_ls020 подключаем:
// к ардуине на ATmega328
//**********************************************************
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#include <FreqCount.h>
#include <PWM.h>
// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS 10
#define TFT_RST A0
#define TFT_DC 8
// Option 1 (recommended): must use the hardware SPI pins
// (for UNO thats sclk = 13 and sid = 11) and pin 10 must be
// an output. This is much faster - also required if you want
// to use the microSD card (see the image drawing example)
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// Option 2: use any pins but a little slower!
//#define TFT_SCLK 13 // set these to be whatever pins you like!
//#define TFT_MOSI 11 // set these to be whatever pins you like!
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
#define Out 9 //пин для генератор сигналов и DSS(не менять)
#define dds 9 //пин для генератора dds (не менять)
//#################№№№№№№####пользовательские настройки!
#define levo 4
#define ok 3
#define pravo 2
#define akb A3 //любой своюодный аналоговый пин для измерения напряжения АКБ
#define delit 6 //включен или отключен делитель на х10
#define overclock 16 //Частота на которой работает Ардуино
byte SinU=30; // =30; //уровень синхронизации 0 до 255
int PWM = 128;//стартовое значение ШИМ от 0 до 255
int32_t frequency = 500; //стартовое значение частоты в Гц
float VCC=5.0; //напряжение питания, меряем мультиметром
byte pultoskop=1; //флаг выбора генератора или осциллографа
//###########################################################
byte menuDDS=0;
byte sinM[32]={1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
byte pilaM[32]={1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
byte RpilaM[32]={250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
byte trianglM[32]={1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};
byte hag=0;
int mnog=0;
boolean flag=0;
byte mass[256];//массив АЦП
//byte massDEL[401];
byte menu=1;//переменная верхнего меню
byte razv=5;//значение развертки
byte x=30; //счетчик оси Х
int Vmax=0;// максимальное напряжение
unsigned long pause=0;//переменная для замены Delay
bool opornoe=1; //флаг опорного напряжения
bool paus=0; //флаг режима паузы
bool clen_p=0;//флаг чистки паузы
long countX=0;
byte sinhMASS=0;
unsigned long count =0;
int prokr=0;
char str[10];
int temp;
float armcurrent;
int d=0;
//********************* ОТРИСОВКА ЛИНИИ *********************************
void Line(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
uint16_t color) {
bool vektor = abs(x0 - x1) > abs (y0 - y1);
if (vektor) {
if (y1 > y0) {
int h = x1 - x0 + 1;
int d = y1 - y0 + 1;
h = h / d;
for (; y0 <= y1; y0++) {
tft. drawFastHLine(x0, y0, h, color);
x0 = x0 + h;
}
}
else {
int h = x1 - x0 + 1;
int d = y0 - y1 + 1;
h = h / d;
for (; y0 >= y1; y0--) {
tft. drawFastHLine(x0, y0, h, color);
x0 = x0 + h;
}
}
}
else {
if (y1 > y0) {
int h = y1 - y0 + 1;
int d = x1 - x0 + 1;
h = h / d;
for (; x1 >= x0; x0++) {
tft. drawFastVLine(x0, y0, h, color);
y0 = y0 + h;
}
}
else {
int h = y0 - y1 + 1;
int d = x1 - x0 + 1;
h = h / d;
for (; x1 >= x0; x1--) {
tft.drawFastVLine(x1, y1, h, color);
y1 = y1 + h;
}
}
}
}
//********************* МЕНЮ DDS *********************
void DDS_Menu () {
tft.setCursor(35, 30);
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(1);
tft.println("СИНУС");
tft.setCursor(35, 50);
tft.println("ТРЕУГОЛЬНИК");
tft.setCursor(35, 70);
tft.println("ПИЛА");
tft.setCursor(35, 90);
tft.println("ПИЛА ОБР");
}
//***************** ОТРИСОВКА В ПАУЗЕ ОСЦИЛОГРАФА *******************
void Pause(){
tft.fillRect(0, 12, 160, 3, ST7735_BLACK);//стиране шкалы прокрутки
tft.fillRect(6, 12, 154, 99, ST7735_BLACK);//стиране поле графика
// tft.fillRect(0,116, 160, 12, ST7735_BLACK);//стиране НИЖНЕГО МЕНЮ
//////////////////////////////////////////////////////////////
tft.drawLine(prokr/4,12,prokr/4+25,12, ST7735_YELLOW);//шкала прокрутки
tft.drawLine(prokr/4,13,prokr/4+25,13, ST7735_YELLOW);//шкала прокрутки
tft.drawLine(prokr/4,14,prokr/4+25,14, ST7735_YELLOW);//шкала прокрутки
//++++++++++++++++ СЕТКА
for(byte i=110;i>18;i=i-3){
tft.drawPixel(6,i, ST7735_BLUE);
tft.drawPixel(25,i, ST7735_BLUE);
tft.drawPixel(44,i, ST7735_BLUE);
tft.drawPixel(63,i, ST7735_BLUE);
tft.drawPixel(82,i, ST7735_BLUE);
tft.drawPixel(101,i, ST7735_BLUE);
tft.drawPixel(120,i, ST7735_BLUE);
tft.drawPixel(139,i, ST7735_BLUE);
tft.drawPixel(158,i, ST7735_BLUE);
// tft.drawPixel(159,i, ST7735_BLUE);
}
for(byte i=6;i<160;i=i+3){
tft.drawPixel(i,25, ST7735_BLUE);
tft.drawPixel(i,42, ST7735_BLUE);
tft.drawPixel(i,59, ST7735_BLUE);
tft.drawPixel(i,76, ST7735_BLUE);
tft.drawPixel(i,93, ST7735_BLUE);
tft.drawPixel(i,110, ST7735_BLUE);
}
//////////////////////////////////////////////////////
x=5;
for(int y=prokr;y<prokr+146;y++){
if(razv<7){ x++;}
if(razv==7){x=x+2;}
if(razv==8){ x=x+3; }
if(razv==9){ x=x+4; }
if(razv==10){ x=x+5; }
if(x>160){ x=160; }
// tft.drawPixel(x,110-mass[y]/3,ST7735_GREEN);
tft.drawLine(x,110-mass[y]/3, x+1,110-mass[y+1]/3, ST7735_GREEN);//график
}
}
//************* ОТРИСОВКА ВЕРХНЕГО МЕНЮ ************************
void PrintVmenu(){
tft.fillRect(0, 0, 45, 9, ST7735_BLACK);
if(digitalRead(delit)==HIGH){//включен или отключен делитель
if(opornoe==0){
tft.setTextColor(ST7735_WHITE);
tft.setCursor(3, 1);
tft.println( "2.2V/d");
}
if(opornoe==1){
tft.setTextColor(ST7735_WHITE);
tft.setCursor(3, 1);
tft.println( "10V/d");
}
}
else {//включен или отключен делитель
if(opornoe==0){
tft.setTextColor(ST7735_WHITE);
tft.setCursor(3, 1);
tft.println( "0.22V/d");
}
if(opornoe==1){
tft.setTextColor(ST7735_WHITE);
tft.setCursor(3, 1);
tft.println( "1V/d");
}
}
tft.setCursor(55, 1);
tft.println( "Разв");
sprintf(str, "%d", razv);
tft.setCursor(91, 1);
tft.println( str);
}
//******************* ОТРИСОВКА ГЛАВНОГО МЕНЮ *****************
void GlavMenu (){
tft.setTextSize(1);
tft.setTextColor(ST7735_WHITE);
tft.setCursor(35, 25);
tft.println("Осцилограф");
tft.setCursor(35, 55);
tft.println("Генератор PWM");
tft.setCursor(35, 85);
tft.println("Генератор DDS");
tft.setTextColor(ST7735_BLUE);
tft.setCursor(30, 110);
tft.println("Батарея =");
armcurrent = analogRead(akb)*VCC/1023;//проверка напряжения на АКБ
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%02d V", (int)armcurrent, abs(temp));
tft.fillRect(90,110,24,10,ST7735_BLACK);
tft.setTextColor(ST7735_BLUE);
tft.setCursor(90, 110);
tft.println(str);
}
void setup(){
if(opornoe==0){
ADMUX = 0b11100100;
}//выбор внутреннего опорного 1,1В
if(opornoe==1){
ADMUX = 0b01100100;
}//Выбор внешнего опорного
SPI.begin;
SPI.setClockDivider(SPI_CLOCK_DIV2);
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
tft.setRotation(3); // повернуть по горизонту
tft.fillScreen(ST7735_BLACK);
tft.drawRect(0,0,160,128,ST7735_WHITE); // рисуем рамку
tft.drawRect(2,2,156,125,ST7735_BLUE); // рисуем рамку
tft.drawRect(4,3,152,121,ST7735_RED); // рисуем рамку
// подтянули кнопки к питанию
digitalWrite(levo, HIGH); digitalWrite(pravo, HIGH); digitalWrite(ok, HIGH);
while(digitalRead(ok)==HIGH){
if(digitalRead(pravo)==LOW){
// delay (10);
while((digitalRead(pravo)==LOW));
pultoskop=pultoskop-1;
if(pultoskop<1)pultoskop=3;
}
if(digitalRead(levo)==LOW){
// delay (10);
while((digitalRead(levo)==LOW));
pultoskop=pultoskop+1;
if(pultoskop>3)pultoskop=1;
}
if(pultoskop==1){
GlavMenu ();
// tft.setTextSize(1);
tft.setTextColor(ST7735_RED);
tft.setCursor(35, 25);
tft.println("Осцилограф");
}
if(pultoskop==2){
GlavMenu ();
tft.setCursor(35, 55);
tft.setTextColor(ST7735_RED);
tft.println("Генератор PWM");
}
if(pultoskop==3){
GlavMenu ();
tft.setCursor(35, 85);
tft.setTextColor(ST7735_RED);
tft.println("Генератор DDS");
}
delay(200);
}
tft.fillScreen(ST7735_BLACK);//очистка дисплея
if(pultoskop==1){
FreqCount.begin(1000);
// tft.fillScreen(ST7735_BLACK);//очистка дисплея
}
if(pultoskop==2){
InitTimersSafe();
bool success = SetPinFrequencySafe(Out, frequency);
// tft.fillScreen(ST7735_BLACK);//очистка дисплея
}
if(pultoskop==3){
InitTimersSafe();
bool success = SetPinFrequencySafe(Out,200000);
// tft.fillScreen(ST7735_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<255;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
delayMicroseconds(500);
mass[i]=ADCH;
}
}
if (razv>0){
for(int i=0;i<255;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
}
}
}
void MenuT(){//перерисовка нижнего меню
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)-0.2; }//-0.2 КОРЕКЦИЯ ПОКАЗАНИЙ ЧАСТОТЫ ГЦ //delitel 128
flagFrec1=0;
flagFrec3=0;
}
}
}
//#######################################частоты сигнала
tft.setTextColor(ST7735_WHITE);
tft.setCursor(1, 120);
tft.println( "F=");
if(opornoe==1){
if((Vmax*VCC/255)>2.8){ countX=count*(overclock/16.0); }
if((Vmax*VCC/255)<=2.8){ countX=Frec*(overclock/16.0); }
}
if(opornoe==0){ countX=Frec*(overclock/16.0); }
if(countX<1000){
sprintf(str, "%d Hz", countX);
tft.setTextColor(ST7735_WHITE);
tft.setCursor(18, 120);
tft.println( str);
}
if(countX>=1000){
float countXK=countX/1000.0;
temp = (countXK - (int)countXK) * 1000; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д
sprintf(str, "%d.%03d kHz", (int)countXK, abs(temp));
tft.setTextColor(ST7735_WHITE);
tft.setCursor(18, 120);
tft.println( str);
}
tft.setTextColor(ST7735_WHITE);
tft.setCursor(18, 120);
tft.println( str);
//--------- Напряжение --------------------
if(digitalRead(delit)==HIGH){//включен или отключен делитель
if(opornoe==0){ armcurrent = (Vmax*1.1/255)*10; }
if(opornoe==1){ armcurrent = (Vmax*VCC/255)*10; }
}
else {
if(opornoe==0){ armcurrent = Vmax*1.1/255; }
if(opornoe==1){ armcurrent = Vmax*VCC/255; }
}
tft.setTextColor(ST7735_WHITE);
tft.setCursor(100, 120);
tft.println( "U=");
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%02d V", (int)armcurrent, abs(temp));
tft.setTextColor(ST7735_WHITE);
tft.setCursor(118, 120);
tft.println( str);
}
void loop() {
if(pultoskop==1){
while(1){
//********** ОТРИСОВКА И ПЕРЕБОР ВЕРХНЕГО МЕНЮ ***************************
//***************** опорное **************************
if(menu==0){
tft.fillRect(0, 0, 45, 9, ST7735_RED);
PrintVmenu();
if(digitalRead(pravo)==LOW){
tft.fillRect(0, 12, 30, 120, ST7735_BLACK);//стирание напряжения
opornoe=1;
}
if(digitalRead(levo)==LOW){
tft.fillRect(0, 12, 30, 120, ST7735_BLACK);//стирание напряжения
opornoe=0;
}
}
/////////////////////////// развертка /////////////////////////////
if(menu==1){
tft.fillRect(48, 0, 57, 9, ST7735_RED);
PrintVmenu();
if(digitalRead(pravo)==LOW){//добавть скорость
delay (30);
while((digitalRead(pravo)==LOW));
razv++;
if(razv==11){ razv=10;}
}
if(digitalRead(levo)==LOW){//убавить скорость
delay (30);
while((digitalRead(levo)==LOW));
razv--;
if(razv==255){ razv=0; }
}
}
///////////////////// синхронизация /////////////////////////////////
if(menu==2){
prokr=0;
paus=0;
PrintVmenu();
tft.fillRect(105, 0, 174, 9, ST7735_RED);
tft.setCursor(112, 1);
tft.println( "Синх-ция");
if(digitalRead(levo)==LOW){
SinU=SinU-10;
if(SinU<10){ SinU=10; }
}
if(digitalRead(pravo)==LOW){
SinU=SinU+10;
if(SinU>240){ SinU=240; }
}
tft.fillCircle(155,110-SinU/3, 3, ST7735_RED);
tft.fillCircle(155,110-SinU/3, 1, ST7735_BLACK);
}
///////////////////// пауза //////////////////////////////////
if(menu==3){
paus=1;
if(clen_p==0){
clen_p=1;
tft.fillRect(105, 0, 174, 9, ST7735_RED);
PrintVmenu();
tft.setCursor(112, 1);
tft.println( "ПАУЗА");
}
}
if(digitalRead(ok)==LOW){
delay (30);
while((digitalRead(ok)==LOW));
menu++;
tft.fillRect(6, 16, 154, 99, ST7735_BLACK);//стиране поле графика
tft.fillRect(0,116, 160, 12, ST7735_BLACK);//стиране НИЖНЕГО МЕНЮ
if(menu==4){
menu=0;
paus=0;
clen_p=0;
}
tft.fillRect(0, 0, 160, 15, ST7735_BLACK);//стиране ВЕРХ МЕНЮ
}
//************** ОСЬ НАПРЯЖЕНИЯ ##########################################
tft.drawLine(2, 20, 2, 114, ST7735_BLUE);
tft.drawLine(2, 25, 5, 25, ST7735_BLUE);
tft.drawLine(2, 42, 5, 42, ST7735_BLUE);
tft.drawLine(2, 59, 5, 59, ST7735_BLUE);
tft.drawLine(2, 76, 5, 76, ST7735_BLUE);
tft.drawLine(2, 93, 5, 93, ST7735_BLUE);
tft.drawLine(2, 110,5, 110, ST7735_BLUE);
//************ ОСЬ РАЗВЕРТКИ ##########################################
tft.drawLine(2, 115,158, 115, ST7735_BLUE);
// Черточки ******************
for(byte i=6;i<160;i=i+19){
tft.drawPixel(i,114, ST7735_BLUE);
tft.drawPixel(i,113, ST7735_BLUE);
tft.drawPixel(i,112, ST7735_BLUE);
}
//***************выбор внутреннего опорного 1,1В ########################################
if(opornoe==0){ ADMUX = 0b11100100; }
//**************Выбор внешнего опорного ***************************
if(opornoe==1){ ADMUX = 0b01100100; }
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<151;y++){ if(Vmax<mass[y]){ Vmax=mass[y]; } }
//максимальное значение сигнала ##########################
//************************ ОТРИСОВКА ГРАФИКА *************************
if(paus==0){
tft.fillRect(6, 25, 154, 86, ST7735_BLACK);//стиране поле графика
//***//*************** стиране НИЖНЕГО МЕНЮ **********************
tft.fillRect(18, 120, 80, 8, ST7735_BLACK);
tft.fillRect(118, 120, 25, 8, ST7735_BLACK);
//*****************************************************************
tft.fillCircle(10,110-SinU/3, 2, ST7735_YELLOW);//рисуем уровень синхронизации
tft.fillCircle(10,110-SinU/3, 3, ST7735_YELLOW);//рисуем уровень синхронизации
x=5;
for(int y=sinhMASS-1;y<sinhMASS+151;y++){
if(razv<7){ x++; }
if(razv==7){ x=x+2; }
if(razv==8){ x=x+3; }
if(razv==9){ x=x+4; }
if(razv==10){ x=x+5; }
if(x>159){ x=159; }
Line(x,110-mass[y]/3, x+1,110-mass[y+1]/3, ST7735_GREEN);//график через Line (быстрее в 2 раза)
}
MenuT();
}
///////////////////////////// режим паузы ////////////////////////////////////////////////
if(paus==1){
if(digitalRead(pravo)==LOW){//листаем
prokr=prokr+2;
if(prokr>554){prokr=0; }
Pause();
}
if(digitalRead(levo)==LOW){//листаем
prokr=prokr-2;
if(prokr<0){prokr=554; }
Pause();
}
}
// delay(300); // можно удалить или подобрать по скорости обновления экрана
}
}
//************************************************************************************************
//####################################### режим ренератора от 1 Гц до 2 МГц
if(pultoskop==2){
while(1){
if (flag==0){//флаг выборов режима настройки Частоты
if(digitalRead(levo)==LOW){
frequency=frequency-mnog;
if(frequency<0){
frequency=0;
}
bool success = SetPinFrequencySafe(Out, frequency);
delay(3);//защита от дребезга
tft.fillRect(6, 60, 160, 80, ST7735_BLACK);//стирание поля
}
if(digitalRead(pravo)==LOW){
frequency=frequency+mnog;
bool success = SetPinFrequencySafe(Out, frequency);
delay(3);//защита от дребезга
tft.fillRect(6, 60, 160, 80, ST7735_BLACK);//стирание поля закрашиваем
}
}
if (flag==1){//флаг выборов режима настройки ШИМ
if(digitalRead(levo)==LOW){
PWM=PWM-2;
if(PWM<0){
PWM=255;
}
delay(3);//защита от дребезга
tft.fillRect(6, 6, 160, 40, ST7735_BLACK);//стирание поля
tft.fillRect(90, 100, 129, 125, ST7735_BLACK);//стирание в низу число шим
}
if(digitalRead(pravo)==LOW){
PWM=PWM+2;
if(PWM>255){
PWM=0;
}
delay(3);//защита от дребезга
tft.fillRect(6, 6, 160, 40, ST7735_BLACK);//стирание поля
tft.fillRect(90, 100, 129, 125, ST7735_BLACK);//стирание в низу число шим
}
}
if(digitalRead(ok)==LOW){//переключение разряда выбора частоты
delay (30);
while((digitalRead(ok)==LOW));
hag++;
if(hag>=6){
hag=0;
}
tft.fillRect(6, 100, 154, 28, ST7735_BLACK);//стирание поля
}
////////////
tft.setCursor(10, 19);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2);
tft.println("PWM =");
// temp = PWM*100/255;
tft.setCursor(80, 19);
tft.println( PWM*100/255,1);
tft.setCursor(122, 19);
tft.println( "%");
armcurrent = (127*PWM/255)+25; // вычисляем длинны линии
tft.drawLine(6,10,armcurrent,10, ST7735_YELLOW);
tft.drawLine(6,11,armcurrent,11, ST7735_YELLOW);
tft.drawLine(6,12,armcurrent,12, ST7735_YELLOW);
tft.drawLine(6,13,armcurrent,13, ST7735_YELLOW);
tft.drawLine(6,14,armcurrent,14, ST7735_YELLOW);
tft.drawLine(6,37,armcurrent,37, ST7735_YELLOW);
tft.drawLine(6,38,armcurrent,38, ST7735_YELLOW);
tft.drawLine(6,39,armcurrent,39, ST7735_YELLOW);
tft.drawLine(6,40,armcurrent,40, ST7735_YELLOW);
tft.drawLine(6,41,armcurrent,41, ST7735_YELLOW);
///////////////////////////////////
long frequencyX=frequency*(overclock/16.0);
tft.setTextSize(2);
if(frequencyX<1000){
sprintf(str, "%d Hz", frequencyX);
tft.setCursor(30, 60);
tft.setTextColor(ST7735_WHITE);
tft.println(str);
tft.setTextSize(1);
}
if(frequencyX>=1000&&frequencyX<1000000){
tft.setTextSize(2);
armcurrent=frequencyX/1000.0;
temp = (armcurrent - (int)armcurrent) * 1000; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%003d kHz", (int)armcurrent, abs(temp));
tft.setCursor(15, 60);
tft.setTextColor(ST7735_WHITE);
tft.println(str);
tft.setTextSize(1);
}
if(frequencyX>=1000000){
tft.setTextSize(2);
armcurrent=frequencyX/1000000.0;
temp = (armcurrent - (int)armcurrent) * 1000; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%003d MHz", (int)armcurrent, abs(temp));
tft.setCursor(30, 60);
tft.setTextColor(ST7735_WHITE);
tft.println(str);
tft.setTextSize(1);
}
if(frequencyX>2000000)frequency=0;
//////////////////////////////////////////////////////////////
tft.setCursor(5, 100);
tft.setTextColor(ST7735_BLUE);
tft.setTextSize(1);
tft.println(">>");
if(hag==0){//выбор множителя частоты
mnog=1;
flag=0;
armcurrent = 1*(overclock/16.0);
tft.setTextSize(2);
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%d Hz", (int)armcurrent, abs(temp));
tft.setCursor(30, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(str);
}
if(hag==1){//выбор множителя частоты
mnog=10;
armcurrent = 10*(overclock/16.0);
tft.setTextSize(2);
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%d Hz", (int)armcurrent, abs(temp));
tft.setCursor(30, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(str);
}
if(hag==2){//выбор множителя частоты
mnog=100;
armcurrent = 100*(overclock/16.0);
tft.setTextSize(2);
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%d Hz", (int)armcurrent, abs(temp));
tft.setCursor(30, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(str);
}
if(hag==3){//выбор множителя частоты
mnog=1000;
armcurrent = 1*(overclock/16.0);
tft.setTextSize(2);
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%d kHz", (int)armcurrent, abs(temp));
tft.setCursor(30, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(str);
}
if(hag==4){//выбор множителя частоты
mnog=10000;
armcurrent = 10*(overclock/16.0);
tft.setTextSize(2);
temp = (armcurrent - (int)armcurrent) * 100; // множитель - число знаков после запятой. 10 - 1, 100 - 2, 1000 - 3 и т.д.
sprintf(str, "%d.%d kHz", (int)armcurrent, abs(temp));
tft.setCursor(30, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(str);
}
if(hag==5){//выбор PWM
flag=1;
tft.setTextSize(2);
tft.setCursor(25, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println("PWM =");
// temp = PWM*100/255;
tft.setCursor(95, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println(PWM*100/255,1);
tft.setCursor(132, 100);
tft.setTextColor(ST7735_YELLOW);
tft.println("%");
}
tft.setCursor(145, 100);
tft.setTextColor(ST7735_BLUE);
tft.setTextSize(1);
tft.println("<<");
pwmWrite(Out, PWM);
delay(50);
}
}
//************************************************************************************************
//####################################### режим DDS ренератор
if(pultoskop==3){
while(1){
int fr=10;
if(menuDDS==0){
DDS_Menu ();
tft.setCursor(35, 30);
tft.setTextColor(ST7735_RED);
// tft.setTextSize(1);
tft.println("СИНУС");
delay(400);
while(PIND & (1<<PIND2)){
PWM=sinM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
}
if(menuDDS==1){
DDS_Menu ();
tft.setCursor(35, 50);
tft.setTextColor(ST7735_RED);
tft.println("ТРЕУГОЛЬНИК");
delay(400);
while(PIND & (1<<PIND2)){
PWM=trianglM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
}
if(menuDDS==2){
DDS_Menu ();
tft.setTextColor(ST7735_RED);
tft.setCursor(35, 70);
tft.println("ПИЛА");
delay(400);
while(PIND & (1<<PIND2)){
PWM=pilaM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
}
if(menuDDS==3){
DDS_Menu ();
tft.setCursor(35, 90);
tft.setTextColor(ST7735_RED);
tft.println("ПИЛА ОБР");
delay(400);
while(PIND & (1<<PIND2)){
PWM=RpilaM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
}
if(menuDDS==4){menuDDS=0;}
}
}
/////////////////////DDS
}
я уже находил 4-анальный анализатор уровней и сохранил проект. кто будет прикручивать к пультоскопу вышлю архив на почту. так-же нашел измеритель емкости (на случай если весь тестер транзисторов не влезет). анализатор шин лишним не будет.у меня приятель не мог запустить дисплей 1602. пока с помощью программы не узнал его действительный адрес ,коорый как оказалось не соответствовал перемычкам на плате дисплея.
Так же можно сделать анализатор шин SPI и I2C. Нужно?
Это типа Saleae LOGIC? с записью в файл?
Хотел еще экран SPI ILI9341 320х240 2.2 потестить с пультоскопом, но он походу полудохлый.
На графтесте с библами ILI9341 и ILI9340, показывает что-то, под углом если смотреть, и на 2/3 экрана, картинка меняется, но смазанная.
Запитывал и 5В и 3.3В, уровни делал и через резюки, и через делители на GND. При 3.3В подключал на прямую (перемычку на плате ставил). Экран от платы отлепил, контакты на шлейфе нормальные, короче облом :(
вообще можно отдельно сделать только лог анализатор,а там уже на spi иi2c замахнуться
если сделать 8 входов то потом еще усовершенствовать-добавить AD9280-то захотел-это лог анализатор,захотел-воткнул платку с AD-шкой и вот вам осциллоскоп с полосой до (допустим) 300 кгц
P.S. доделал хамелеон D CUBE,давно надо было собрать-хороший приборчик...
у меня приятель не мог запустить дисплей 1602. пока с помощью программы не узнал его действительный адрес ,коорый как оказалось не соответствовал перемычкам на плате дисплея.
Просто там к адресу бит прибавляется где то, вот тебе и не тот адрес.
Sakatgg, После компиляции выдает ошибку #include <Adafruit_CFX.h> //Core graphics library, Я так понемаю что нет какойто библиотеки, и как ее подключить?
Sakatgg, После компиляции выдает ошибку #include <Adafruit_CFX.h> //Core graphics library, Я так понемаю что нет какойто библиотеки, и как ее подключить?
Здравствуйте, попробуйте для начала так: #include "Adafruit_CFX.h"
круто, я бы автоматическую развёртку дополнил функцией выбора количества периодов : 0,5; 1; 2; 3; 4. Не лишать же пользователя возможности её менять . Но это пока только слова, протестирую и посмотрю сам ))
круто, я бы автоматическую развёртку дополнил функцией выбора количества периодов : 0,5; 1; 2; 3; 4. Не лишать же пользователя возможности её менять . Но это пока только слова, протестирую и посмотрю сам ))
На 16 и 24 работают все твои прошивки отлично! Проблема только с фичей "Автоматический выбор развертки" , скорее всего что я чего-то не учёл,.. но то что на 16 работает, а на 24 глючит - это очень странно,... и очень прикольно одновременно, есть теперь над чем поразмыслить ))
я примерно понял, дело в математике, КРАТНОСТЬ надо найти. что бы кратность в фитче была кратной или частоте кварца или частоте экрана, там скорее всего выдет для каждого экрана своя
я примерно понял, дело в математике, КРАТНОСТЬ надо найти. что бы кратность в фитче была кратной или частоте кварца или частоте экрана, там скорее всего выдет для каждого экрана своя
--------------------------------------
полностью согласен ! и контролировать тип данных т.к. влияние каждой цифры после запятой, в данном случае критично.
кстати какой тип у переменной #define overclock 16 // частота на которой работает Ардуино
для Electronik83
та да. сейчас ломаю голову над реализацией меню с прокруткой и линейкой . осталось зациклить конец с началом и наоборот а так вроде работает.
А я таким загорелся. https://ru.aliexpress.com/item/Free-shipping-Hantek-DSO5072P-Digital-storage-oscilloscope-70MHz-2Channels-1GSa-s-7-TFT-LCD/1335968410.html?spm=2114.30010708.3.10.vZEjGu&ws_ab_test=searchweb201556_0%252Csearchweb201602_2_10039_10048_10037_10017_404_10046_507_10032_10040%252Csearchweb201603_7&btsid=981d1fc7-be47-459c-aea1-f8372a88142b&aff_platform=aaf&cpt=1489248390647&sk=eub6yrrBy&aff_trace_key=049cd62c35a34ae28bd7cb23f841f7c5-1489248390647-04389-eub6yrrBy
Но своёж интересней!
А я таким загорелся.........................................
А я таким загорелся. https://ru.aliexpress.com/item/Free-shipping-Hantek-DSO5072P-Digital-storage-oscilloscope-70MHz-2Channels-1GSa-s-7-TFT-LCD/1335968410.html?spm=2114.30010708.3.10.vZEjGu&ws_ab_test=searchweb201556_0%252Csearchweb201602_2_10039_10048_10037_10017_404_10046_507_10032_10040%252Csearchweb201603_7&btsid=981d1fc7-be47-459c-aea1-f8372a88142b&aff_platform=aaf&cpt=1489248390647&sk=eub6yrrBy&aff_trace_key=049cd62c35a34ae28bd7cb23f841f7c5-1489248390647-04389-eub6yrrBy
Но своёж интересней!
https://ru.aliexpress.com/item/Hantek-DSO5102P-Digital-Oscilloscope-100M...
И в 200МГц переделывает по "хлопку".
.
...................
И в 200МГц переделывает по "хлопку".
.
...................
И в 200МГц переделывает по "хлопку".
Лох - это судьба ))) Без обид )
Лох - это судьба ))) Без обид )
Перелопатил весь интернет, нашел клавиатуру, которая нужна за 1700 р. Заплатил, оформил... На следующий день приходит реклама, предлагают на 800 р. дешевле...
Перелопатил весь интернет. Выбрал телевизор, который мне нужен. Заплатил 18000, получил. На следующий день захожу на сайт в тот же магазин, цена на это телевизор 16500 р.!!!!!!!!!!!!!!!
Вот так же и с осциллографом. Проклятие какое-то........
Вот так же и с осциллографом. Проклятие какое-то........
Покупаем телек. гарантия лучшей цены. 62 тысячи кажется. Грузим в машину и едем. По пути кент стоит, остановился кое-что перетереть. Ну тот типа довези, я ему что машина до талова телек купил, домой везу. Ну в общем слово за слова, он мне да вон магаз такой же теле 40 рублей. Я чуть не всрался. Туда, реально. 40 тысяч! Я волосы на попе рву, ща думаю сдам. И тут я понимаю что ценник висит не от 52'' панели, а от 40'', а сам телек 52''. Как я там наклал...
как говорит русская народная мудрость :" В умелых руках и член - балалайка". как мы раньше обходились одним стрелочным прибором? для того чтобы оценить форму звукового сигнала, наличие генерации, логический уровень - пультоскопа предостаточно. у меня осцил(С-67) дома и 2 на работе за 17 лет пользовался раз 10. а вот карманный требовался каждую неделю, но приходилось обходиться мультиметром.
как говорит русская народная мудрость :" В умелых руках и член - балалайка". как мы раньше обходились одним стрелочным прибором? для того чтобы оценить форму звукового сигнала, наличие генерации, логический уровень - пультоскопа предостаточно. у меня осцил(С-67) дома и 2 на работе за 17 лет пользовался раз 10. а вот карманный требовался каждую неделю, но приходилось обходиться мультиметром.
Ну во первых тогда техники такой не было. А так что была цифра... сейчас калькуляторы быстрее. По поводуосцила, то да. Но немного наоборот. Карманный он мне вообще не нужен. Он мне нужен настольный, но небольшой. И вообще и сам осцил нужен раз в пол года и то по заказу. По сему я бы спокойно обошелся и пультоскопом, но что-то мне подсказывает что не ровен час и когда его вообще не завести с китая. Тем более официально уже нельзя. Меня это и останавливает. Но китаец пишет что отправлять будет как "DYI, HOBBY, ELECTRONIC PARTS". Но сыкотно. Просто вдруг как жизнь повернется и завтра он пригодится. У меня есть возможность практически круглосуточно получать доступ к осцилу, но так не охота ехать туда. Ибо потом за одно обращение и то я сам все сделаю прийдется отрабатывать очередной загашеный бабами ноут и т.д. Вот и думаю Вроде бы 13- не великие деньги и я могу позволить хоть сейчас, но с другой стороны если и буду в ближайший месяц епго использовать, то на 1/100 его возможностей. Но купить скажем тот же DSO за 6 тысяч и через 2 года кусать локти что сжалил каких-то 6-8 тысяч... сам понимаешь.
Надо брать. Спросите у dimax_а. Деньги истратил и забыл, а осциллограф будет радовать всю оставшуюся жизнь.
Наличие 2-х каналов и неплохие характеристики дают огромные возможности для исследования любого электронного устройства. У меня на данный момент есть осциллограф ОМЛ-2М. Поигрался, понравилось, но захотелось чего-то покруче. Решил, что Hantek смогу себе позволить. Только что-то долго идет....
А пультоскоп вполне себе хороший карманный пробник и во многих ситуациях будет даже очень удобен. В планах есть желание повторить эту конструкцию. Тем более если всетаки будет нормальный осциллограф, то с ним будет легче настроить и проверить пультоскоп :)
согласен если есть возможность надо брать ! я вообще хочу пультоскоп встроить в станину старой настольной лампы чтобы всегда был под рукой.
както раз навесу собрал пультоскоп, так нужно было сигнал померить, все заработало, автору огромный респект! На экранчике fruit собирал (вроде так называется, цветной такой). И успел увидеть там генератор сигнала. Настраивается как помнится freq и duty. Так вот сейчас нужно на работе по зарез по быстрому простите из говна и палочек собрать станцию для проверки бензиновых топливных форсунок для автомобилей. Программирую плохо, поэтому долго мне самому программу писать, потом настраивать её. Подумал, что можно использовать генератор сигнала от пультоскопа. Только одно но, необходимо отключать генератор по прошествию например определённого времени (нескольких сек), ну или определённого количества импульсов. Помогите решить такую задачу, если не сложно это (а то начнут щас).
Так вот сейчас нужно на работе по зарез по быстрому простите из говна и палочек собрать станцию для проверки бензиновых топливных форсунок для автомобилей.
Господа, извините за флуд не по теме, больше не буду.
MaksVV, не надо забивать микроскопом гвозди. самое отличное решение
или если очень ардуино нужно https://www.drive2.ru/c/462912263431389392/
ещё раз извините меня, что не по теме
спасибо взял на заметку
Попробовал дисплей TFT на ST7735, скетч http://arduino.ru/forum/proekty/pultoskop-na-arduino-27mgts?page=46#comment-249516
Сделал временно, R=4.7кОм вставил в разрыв сигнальных проводов. То запускается, то нет, мож думаю провода длинные и контакты. Спаял переходную платку с SMD резюками R=10kOm, как советуют на скрине, думаю хуже не будет
Подключаю - белый экран. Так понял сигнала мощи не хватае, взял напрямую подсоединил - работает.
Может на шлейфе эти резюки уже напаяны?
Arduino Nano (usb 340) , питание с usb, через диод 5В->4,6В (на VCC). Замерил ток на pin Reset дисплея
без R R=10KoM
Reset 0,37mA 0,11mA
Там где скейч и схема есть, вроде как автор не ставил их вообще.
Пока так :) напрямую, без резюков, вроде ток мизирный и U=4.6В(диод шоттки на Nano). Еще кнопки переделаю на землю
P.S. Может кому пригодитьcя, код по ссылке от 240265 на дисплей ST7735 подредактировал под кнопки на GND без резисторов, вроде на всех режимах нормально срабатывают:
Придумал добавить логический анализатор на несколько входов. Есть смысл? Так же можно сделать анализатор шин SPI и I2C. Нужно?
я об этом как то писал-было бы не плохо
Спасибо за поддержку - начну делать тогда:) Сколько входов? 4?
я уже находил 4-анальный анализатор уровней и сохранил проект. кто будет прикручивать к пультоскопу вышлю архив на почту. так-же нашел измеритель емкости (на случай если весь тестер транзисторов не влезет). анализатор шин лишним не будет.у меня приятель не мог запустить дисплей 1602. пока с помощью программы не узнал его действительный адрес ,коорый как оказалось не соответствовал перемычкам на плате дисплея.
.
Так же можно сделать анализатор шин SPI и I2C. Нужно?
Это типа Saleae LOGIC? с записью в файл?
Хотел еще экран SPI ILI9341 320х240 2.2 потестить с пультоскопом, но он походу полудохлый.
На графтесте с библами ILI9341 и ILI9340, показывает что-то, под углом если смотреть, и на 2/3 экрана, картинка меняется, но смазанная.
Запитывал и 5В и 3.3В, уровни делал и через резюки, и через делители на GND. При 3.3В подключал на прямую (перемычку на плате ставил). Экран от платы отлепил, контакты на шлейфе нормальные, короче облом :(
Здравствуйте Sakatgg можете поделится прошивкой для вашего пультоскопа на Arduino mini и дисплей ST7735, за ранние спасибо,
вообще можно отдельно сделать только лог анализатор,а там уже на spi иi2c замахнуться
если сделать 8 входов то потом еще усовершенствовать-добавить AD9280-то захотел-это лог анализатор,захотел-воткнул платку с AD-шкой и вот вам осциллоскоп с полосой до (допустим) 300 кгц
P.S. доделал хамелеон D CUBE,давно надо было собрать-хороший приборчик...
alexandr55, код на ST7735 в конце поста #2916, под фото. Кнопки на GND, без резюков.
Просто там к адресу бит прибавляется где то, вот тебе и не тот адрес.
Sakatgg, После компиляции выдает ошибку #include <Adafruit_CFX.h> //Core graphics library, Я так понемаю что нет какойто библиотеки, и как ее подключить?
Качай IDE, рекомендованный автором https://drive.google.com/open?id=0BxfSZik0BpsAZHNDbjBUVzY4dlU
Либу отсюда https://github.com/adafruit/Adafruit-ST7735-Library ложи в папку libraries
Спасибо, буду разбираться
Sakatgg, После компиляции выдает ошибку #include <Adafruit_CFX.h> //Core graphics library, Я так понемаю что нет какойто библиотеки, и как ее подключить?
Здравствуйте, попробуйте для начала так: #include "Adafruit_CFX.h"
#include "Adafruit_GFX.h"
Автоматический выбор развертки (посидел немного в экселе). Прописал перед выводом частоты на экран и после подсчета этой же частоты:
круто, я бы автоматическую развёртку дополнил функцией выбора количества периодов : 0,5; 1; 2; 3; 4. Не лишать же пользователя возможности её менять . Но это пока только слова, протестирую и посмотрю сам ))
Всем спасибо разобрался
Как тесты?
Почему-то перестали приходить уведомления об новых постах сдесь ... Надеюсь, возобновитса теперь. Всем спасибо за новые продвижания тут! :)
мотосезон начался, я бы рад, но, когда не за рулём, какой-то я тормознутый стал последнее время, сорри...
собрал схемку на OLED 128x64, столкнулся с глюком, картинка на дисплее через строчку
https://vk.com/album67396961_152662073?z=photo67396961_456239101%2Falbum...
собрал схемку на OLED 128x64, столкнулся с глюком, картинка на дисплее через строчку
https://vk.com/album67396961_152662073?z=photo67396961_456239101%2Falbum67396961_152662073
ГЫ!))) Были тут такие фотки - лей мою прошиву. Все будет норм. Будет обновление скоро!
2 Electronik83:
https://youtu.be/qY46W4TG_ds
2 Electronik83:
https://youtu.be/qY46W4TG_ds
Блин, спасибо, прикольно. Сижу думаю, куда какие коэффициенты воткнуть. Но, честно, я работаю только с 16 МГц частотой камня. Спасибо тебе.
Предидущие прошивы так не глючат?
повторил схему,возник глюк с дисплеем, такое ощущение что картинка рисуется через строчку,как пофиксить?
а сама идея очень понравилась, хочу завершить устройство
https://vk.com/album67396961_152662073?z=photo67396961_456239101%2Falbum...
повторил схему,возник глюк с дисплеем, такое ощущение что картинка рисуется через строчку,как пофиксить?
а сама идея очень понравилась, хочу завершить устройство
https://vk.com/album67396961_152662073?z=photo67396961_456239101%2Falbum...
дай ссылочку)
дай ссылочку)
Пришлось листать за тебя эту ветку на форуме https://yadi.sk/d/JCOev7-33EEYHQ.
Electronik83?
ай спасибо)
https://yadi.sk/d/JCOev7-33EEYHQ.
PULTOSCOPE_SSD1306_final2_DDS_Z_EL83_EDITION
#НоваяПрошивкаПультоскопа
захэштегю этот линк, так легче будет потом искать.
На 16 и 24 работают все твои прошивки отлично! Проблема только с фичей "Автоматический выбор развертки" , скорее всего что я чего-то не учёл,.. но то что на 16 работает, а на 24 глючит - это очень странно,... и очень прикольно одновременно, есть теперь над чем поразмыслить ))
я примерно понял, дело в математике, КРАТНОСТЬ надо найти. что бы кратность в фитче была кратной или частоте кварца или частоте экрана, там скорее всего выдет для каждого экрана своя
satelit 2
я примерно понял, дело в математике, КРАТНОСТЬ надо найти. что бы кратность в фитче была кратной или частоте кварца или частоте экрана, там скорее всего выдет для каждого экрана своя
--------------------------------------
полностью согласен ! и контролировать тип данных т.к. влияние каждой цифры после запятой, в данном случае критично.
кстати какой тип у переменной #define overclock 16 // частота на которой работает Ардуино