Доброго времени суток! Случилось так, что друг купил в Китае. Вот: http://adatum.ru/samyj-plohoj-arduino-displej-oled-lcd-display-i2c-0-96-iic-serial-128x64.html Ну и вот сегодня вечером пощупал его. Ардуины нет, а вот есть малина одна из первых, которую приспособил как программатор и т.п. Исходил из библиотеки oled_i2c_rus.zip Ну там и другие есть конечно. В них есть примеры для Ардуины. Долго не стал париться и вот сваял простенький тест, выдергивая функции из них. Обмен по I2C взял из своих ранних "черновиков" для малины. Вот: S2LKX212.zip Тут нет вывода текста - руки не дошли. Тут только: - очистка - вывод пикселя - вывод линии - вывод прямоугольника - вывод окружности Всё организовано в файле main.c а сами фунции в oled096.c доступ по i2c в i2c.c. На c++ не стал перетаскивать/делать, а взял свой шаблон для Си (чистого классического). Если у Вас не первая малина, то надо перекомпилировать Код (Text): make clean make Конечно есть предупреждения при компиляции - код не пригладил. Просто как черновик. Фото не выкладываю - смысла нет. Подключал согласно этому: Подключал: VCC - к +5V GND - к GND SDA - к SDA SCL - к SCL А в main всё на "лету". Вот: Код (C++): int main(int argc, char* argv[]) { // printf("---TEST LCD 0,96'---\n"); i2c_OPEN(_slave_addr); // printf("clear...\n"); oledSetup(); oledClear(); oledUpdate(); // printf("Set Pixel...\n"); oledSetPixel(64,32); oledUpdate(); // printf("Clear Pixel...\n"); oledClrPixel(64,32); oledUpdate(); // printf("Draw Line...\n"); oledDrawLine(3,61,124,3); oledDrawLine(61,3,3,124); oledUpdate(); // printf("Clr Line...\n"); oledClrLine(3,61,124,3); oledClrLine(61,3,3,124); oledUpdate(); // printf("Draw Rect...\n"); oledDrawRect(1,1,60,60); oledDrawRect(10,35,40,52); oledUpdate(); // printf("Clr Rect...\n"); oledClrRect(1,1,60,60); oledClrRect(10,35,40,52); oledUpdate(); // printf("Draw RoundRect...\n"); oledDrawRoundRect(3,3,124,61); oledUpdate(); // printf("Clr RoundRect...\n"); oledClrRoundRect(3,3,124,61); oledUpdate(); // printf("Draw RoundRect...\n"); oledDrawCircle(64,32,20); oledUpdate(); // printf("Clr RoundRect...\n"); oledClrCircle(64,32,20); oledUpdate(); // i2c_CLOSE(); printf("end!\n"); // return 0; } То есть после выполнения экран чистый, а в работе сообщения в консоль. Задержки не делал - испытание индикатора. Кому над берите. Может вдруг надо кому... и вопросы задавать не потребуется.
Неужели я призывал к его приобретению? Отнюдь! А куда и для чего его можно... Вот он у меня появился - подарок от Друга и товарищу по интересам к устройствам и их ремонту/созданию. В голову ничего не приходит... Разве что щуп-осциллограф с мелкими параметрами. Где-то видел такой. Ну как логический пробник - крокодил для GND - на проводе и щуп торчащий из торца корпуса. Если на МК с АЦП + входной усилитель + делитель для выбора предела + сабилизатор + батарейки, то можно такой сделать. Вот ADUC7024 пригоден. Питание 3.3 для него. 45МГц + 62Кб флеш + 32Кб ОЗУ + 12Бит АЦП(1Млн выборок в сек) + I2C(и др). А в измерении AD8554: FEATURES Low offset voltage: 1 μV Input offset drift: 0.005 μV/°C Rail-to-rail input and output swing 5 V/2.7 V single-supply operation High gain, CMRR, PSRR: 130 dB Ultralow input bias current: 20 pA Low supply current: 700 μA/op amp Overload recovery time: 50 μs No external capacitors required Питание 2 литиевые батарейки через ADP330 5в на дисплей, 3.3 на контроллер и ОУ. Вот жаль руки не лежат к этому А предлагал просто пример применения на малине. Всё сделано (правда мусора много) с 18:50 до 22:00 примерно. А сейчас спать. Утром на работу.
Доброго времени суток! Так вот: Друг настаивает - надо энтот самый щуп-осциллограф (лучше если будет показывать направление фаз - без средней точки это трудно). А вот форму сигнала с показанием как постоянной, так и с переменной составляющей. Причём учитывая всего 64 пикселя по вертикали то 8бит даже много. Но но можно сделать так: 1 Измеряем в массив 2 выделяем среднее - постоянная составляющая 2 выделяем сумму разниц - переменная составляющая 3 измеряем время между переходами через "0" "взвешенного" значения и определяем время относительно среднего переменной составляющей - время повторения, чем и определяем период. Ведь все так просто - построить датчик с измерением того и другого без переключения пределов... каковы Ваши соображения? Рука не лежит, а вместе это круто. А главное советов и подсказок не надо. А вдруг есть замечания? Ну к примеру: "Как быть если частота превысит частоту выборки АЦП и вообще время преобразования?" Да хрен его знает! Надо сначала сделать что бы устройство было не намного более индикатора вместе с питанием. Ну и возможность отладки/прошивки - JTAG потому как кроме ARM ничего видеть не желаю. Они и маленькие и достойные - напримет STM - онже Cortex и он же ARM.