Ви не увійшли.
Є в наявності робочий дисплей OLED 128x32 з І2С інтерфейсом. Намагаюсь керувати ним "в ручну", тобто без використання бібліотек. Хотілося б спробувати створити свою, під себе.
Суть проблеми: не можу розібратись з даташитом як виводити інформацію на дисплей. Після ініціалізації, які мають бути команди?
Щоб зрозуміліше було, наприклад, я хочу засвітити перший піксель у верхньому лівому куті. Хтось може, простими словами, написати послідовність команд і даних? Зрозумівши як виконується дана проста задача, я зможу вже побачити біль-менш яснішу картину.
Прошу Адміністрацію перенести тему в інший розділ. Помилився трохи.
Підкажіть будьласка чи можливо в середовищі Arduino IDE звертатись до входів-виходів ESP8266 напряму? Наприклад як у AVR:
DDRB B11111111
PORTB B01001001
Ситуація наступна, є два модулі ESP-01 та ESP-01S і два різних перехідника "свистка". Модуль ESP-01S працює на будь-якому з цих перехідників, а от ESP-01 працює тільки на чорному свистку. Світиться світлодіод і все, більше ніякої реакції, навіть на ресет не реагує. В чому може бути проблема?
На червоному чіп СН340С, на чорному затерте маркування.
Скетч часом не з архіву відкриваєте? Розархівуйте архів зі скетчами повністю і відкривайте готовий файл. Або запустіть нове вікно IDE і в нього копіПаст зробіть.
Благодарю за информацию. Я еще на пути познания, не все сразу могу осознать.
Если не напутал, то вот так:
1 Кбит - 2 Кбит
Wire.beginTransmission(deviceAddress);
Wire.write(addressCell);
Wire.write(data);
Wire.endTransmission();
4 Кбит - 16 Кбит
Wire.beginTransmission((byte)(deviceAddress | ((addressCell >> 8) & 0x07)));
Wire.write(addressCell & 0xFF);
Wire.write(data);
Wire.endTransmission();
32 Кбит - 256 Кбит
Wire.beginTransmission(deviceAddress);
Wire.write(addressCell >> 8);
Wire.write(addressCell & 0xFF);
Wire.write(data);
Wire.endTransmission();
Благодарю всем за помощь. Технически проблема решилась, осталось только осознать более глубоко передачу адреса ячейки памяти. Как оказалось этот скетч таки пишет, но не то и не туда)) Я так понял он заточен под памяти с бОльшим объемом. Надеюсь поскорее доразбираться, чтобы внятно описать суть.
Попробуйте найти строку в которой зависает программа, например последовательно перемещая:
Serial.println("checkpoint");
Спасибо, буду пробовать.
Ну и чем библиотека не устроила? Или захотелось секаса?
В какой-то степени да))) Познаю сию науку. Хотелось "напрямую" достучатся по I2C. И теперь не ясно где именно ошибка или хотя бы как ее выявить. Других девайсов с I2C в наличии нет, что бы попробовать к чему-то другому подключиться.
Ситуация такая. Имеются чипы 24С08 (благополучно выпаяные с плат старых компьютерных мониторов). Подключил к Uno по I2C. Если использовать библиотеку Eeprom24C04_08_16-master.zip, то вообще никаких проблем с ними нет. Все пишется и без проблем читается.
Проблема следующая. При попытке обращаться к внешней памяти средствами стандартной библиотеки Wire.h, то никакого взаимодействия не выходит. Прописывал разные адреса и значения. Не записывает и не читает. Код приводу:
#include <Wire.h>
#define disk1 0x50 //Address of 24С08 eeprom chip
void setup(void)
{
Serial.begin(9600);
Wire.begin();
unsigned int address = 0;
writeEEPROM(disk1, address, 123);
Serial.print(readEEPROM(disk1, address), DEC);
}
void loop(){}
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data )
{
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(data);
Wire.endTransmission();
delay(5);
}
byte readEEPROM(int deviceaddress, unsigned int eeaddress )
{
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) rdata = Wire.read();
return rdata;
}
Вскрывал библиотеку. Там код такого же плана)) Куда копать?
1. На пины безопасно подавать от -0.5V до VCC+0.5V.
2. То, что в диапазоне [0..AREF), будет преобразовано в 0..1023, все, что ниже 0V, - в 0, все, что выше или равно AREF, - в 1023.
Благодарю за информацию.
Я так понимаю, что вас забанили в интернете глобально и доступ только на этот форум ...
Понял. Тогда будем искать дальше. Спасибо.
А в чем сложность провести эксперимент ?
А если такая ситуация не предусмотренна устройством микроконтроллера и один из возможных итогов это белый волшебный дым? ))
Хочется изначально узнать теорию перед тем, чтоб что-то делать на практике. Может кто-то задавался таким вопросом и нашел ответ. Гугл не помог, поэтому интересуюсь у знающих людей.
Такой вопрос. Если я подключаю внешнее опорное напряжение, скажем 2,5 В (и соответственно его инициализирую программно), а на аналоговый вход придет, скажем 2,8 В или 3,3 В или все 5 В (ну, по разным на то причинам. Суть в том, что выше, чем AREF). То что считается с аналогового входа? 1023 или выдаст какую-то ошибку?