Хочу предложить, сделать общую тему, куда можно будет задавать небольшие вопросы, создавать новую тему для которых, нецелесообразно. В основном, думаю, это будут вопросы по элементам, с которыми пользователь только начинает знакомиться И так, вопрос от меня: нужно ли обязательно подтягивать выводы SDA и SCL DS1307 через резистор, к питанию (Vcc) при подключении к Arduino Uno?
1. I2C как сферический конь в вакууме - всегда тянуть 2. На Uno подтяжки нет Т.е. если на модуле часов тоже нет, то тянуть
Ну как бы тема Вопрос по i2 chttp://forum.amperka.ru/threads/Вопрос-по-i2c.8503/#post-76154 Только все это вкратце. В сети инфы больше
Ещё про DS1307 хотел спросить: конденсатор ставят только при питании от 3 Вольтовой батарейки, потому-что у неё малый ток разряда, или он нужен и при более ёмком источнике? И какой номинал лучше выбрать?
Коротко и на веру: у любой цифровой микросхемы на максимально близком расстоянии и проводниками наименьшей длины надо ставить керамику 0.1 на каждую пару gnd-vcc Подробнее: CMOS микросхемы в своей основе имеют комплементарные пары p и n полевых транзисторов. Сверху р, снизу n, а затворы соединены. В момент переключения есть ситуация, когда один транзистор "приоткрыт", а второй "подзакрыт", тут возникает сквозной ток от vcc к gnd, те почти короткое замыкание. Чтобы не было просадки и сбоев напряжения, нужен конденсатор. Причем конденсатор должен быстро отдать заряд. И тут есть два фактора: электролиты не умеют отдавать быстро заряд, а длинные провода имеют индуктивность и сопротивляются изменению тока. Поэтому керамика и максимально близко к выводам.
Добавлю вопрос про другой модуль, а то тема про DS1307 получается. Для передатчика, можно подключить вывод Data напрямую к кнопке, со стягивающим резистором 10 кОм, питание 3 AA батарейки, или нужно ещё как-то ограничить напряжение?
Есть массив , в котором должны быть только 0, 1 и 2 . Нужно узнать позицию и отсутствующую цифру. Например Код (C++): byte a[3]={2, 255, 1}; //В a[1] должен быть 0. byte a[3]={0 , 2, 255};//В a[2] - 1 byte a[3]={255, 0, 255};//тут по порядку a[0] -1, a[2] - 2 Как это можно реализовать? С позицией всё ясно Код (C++): for(byte b=0; b<3;b++){ if(a[b]>2){ //а тут уже не ясно } }
Нужно найти ячейку в которой 255, запомнить номер этой ячейки, вычислить правильное значение с учетом остальных. Таких ячеек может быть ни одной, а могут и все.