Схемы у меня нет. Я их не очень люблю рисовать ) На печатной плате есть все элементы, которые необходимы.
По поводу скетча, не вижу смысла пока плодить тут разнообразие. Тем более, что экран который я использую, очень специфичен. И переделывать придется достаточно много. Проще взять любой из последних скетчей , выложенных тут , и поменять analogRead на digitalRead.
Как я понял у него есть два режима работы, spi и i2c, но как их переключить не понял, заранее спасибо (дисплей 0,96' oled ssd1306 12864 spi i2c 2,2-5,5v белый)
Как я понял у него есть два режима работы, spi и i2c, но как их переключить не понял, заранее спасибо (дисплей 0,96' oled ssd1306 12864 spi i2c 2,2-5,5v белый)
Каждый производитель, выпускают свою печатные плату с различной компоновкой электронных компонентов и выведенным интерфейсом, так-как контроллер SSD1306 поддерживает сразу три протокола работы:
Для изменения протокола работы, предусмотрены три линии BS0, BC1 и BS2 с помощью которых, контроллер дисплея определяет по какому протоколу ему работать. В моем случаи, OLED дисплей разработан для работы по одному протоколу I2C, в других вариантов, возможно смена протокола работы с помощью нулевых резисторах или DIP переключателей.
void Tost() { //Рандом - 1
randomSeed(currentTime);
byte num=random(22); // 0...21
Serial.println(num);
//mp3_set_volume (20);// устанвливаем громкость 20 (если хотите установить
// кнопки для регулировки громкости вручную, закоментируйте эту и следующую строчку)
delay (100);
lcd.clear();
switch (num){
//case 0...19
case 20: //ЖЕЛАЮ ЧТОБЫ ВСЕ
lcd.setCursor(0, 0);
lcd.print(F("ЖЕЛАЮ ЧТОБЫ ВСЕ"));
lcd.setCursor(5, 1);
lcd.print(F("!!!!"));
mp3_play (31); // Проигрываем "mp3/0031.mp3"
delay(100);
break;
case 21: //ХЛОПНУТЬ ПО РЮМАШКЕ
lcd.setCursor(0, 0);
lcd.print(F("А НЕ ХЛОПНУТЬ ЛИ"));
lcd.setCursor(1, 1);
lcd.print(F("НАМ ПО РЮМАШКЕ?"));
mp3_play (31); // Проигрываем "mp3/0031.mp3"
delay(3500);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(F("ЗАМЕТЬТЕ, НЕ Я"));
lcd.setCursor(1, 1);
lcd.print(F("ЭТО ПРЕДЛОЖИЛ!"));
break;
}
delay(2000)
}
У тебя третья строчка правильно отображается? У меня почему то"иаметлте" стало,хотя сначала всё нормально было.при чём начинает отображать правильно и сразу же меняется на эту ерунду
Коллеги, подскажите. Есть скетч для замера напряжения на акуме через делитель и выводом на 7й и 6йпиксель светодиодной ленты компилятор выдает вот такую ошибку : expected ';' before '{' token (не хватает ; перед { ) на 41 строчку, однако если закоментировать с 41 по44 строчку компиляция проходит без ошибок. Что не так?
Коллеги, подскажите. Есть скетч для замера напряжения на акуме через делитель и выводом на 7й и 6йпиксель светодиодной ленты компилятор выдает вот такую ошибку : expected ';' before '{' token (не хватает ; перед { ) на 41 строчку, однако если закоментировать с 41 по44 строчку компиляция проходит без ошибок. Что не так?
Спасибо! а обязательно заканчивать "if" "else" или можно "else if" ?
Не обязательно. Все зависит от того что мы хотим получить.
Если в вашем примере procent вдруг по какой то причине будет чуть больше 100 ни одно из условий не выполнится . А вероятность такой ситуации очень велика. Можно было бы записать последним условием else if ( procent >= 80 ) , тогда это былобы аналогично else в данном примере. Мне конструкция с else больше нравиться.
Подскажите может кто-то делал наливатор с дисплеем ssd1306 по протоколу spi
А смысл , если можно по i2c ? Меньше использованных пинов ардуино, которых и так дефицит ))
В гугле полно инфы по SPI дисплеям и ардуино , первое что попалось https://voltiq.ru/oled-128x64px-spi-and-arduino/
Всем добрый вечер! У меня такой глюк периодически появляется:
При кратковременном нажатии кнопки громкости должен проигрывать следующий тост, вообщем у меня 50 на 50, или проигрывает нормально, или тосты начинает проигрывать непрерывно, пока питание не сбросишь, у всех так? И вопрос, может поставить переменный резюк или энкодер заместо кнопок?
Можно усилитель дополнительно поставить, но к другим выводам плеера подключить на схеме это есть. Такой глюк с зацикливанием не замечал. Возможно это связано с питанием.
Мужики.Есть схема и скетч на похожий на ваш девайс,но с расходомером и вместо сервы шаговый двигатель и непонятным для меня индикатором из 7 сигментным индикатором.Не могли бы вы для меня и не только помочь переделать скетч и схему под lcd дисплей и mp3 тосты[code]
int buttonPin = 12; // номер входа, подключенный к кнопке
int Motor = A4; // номер выхода мотора
const int ZeroButton = 9; //кнопка концевика
int buttonState = 0; // переменная для хранения состояния кнопки
int ZeroState = 0; // значение концевика
int Stakan1Pin = 6; // датчики обнаружения стаканов
int Stakan2Pin = 4;
int Stakan3Pin = 3;
int Stakan1 = 0; // значения датчиков обнаружения стаканов
int Stakan2 = 0;
int Stakan3 = 0;
// initialize the stepper library on pins 8 through 11:
Serial.println((String) "CKOPOCTb = " + varResult + " L/MIN"); // Выводим скорость потока воды, показания которой будут меняться после каждого импульса
flam, прочитайте тему целиком и попадете в папку или в две, со схемой, рабочими скетчами и прочее... Заодно скетчи научитесь выкладывать чтобы другие прочитать могли, и без обид...
"с расходомером и вместо сервы шаговый двигатель" - это наверное будет несколько другой проект, если присоединяться энтузиасты.
[code]
#include <Stepper.h>
const int stepsPerRevolution = 2048; // change this to fit the number of steps per revolution
// for your motor
const uint8_t pinSensor = 2; // Определяем № вывода Arduino, к которому подключён датчик расхода воды
uint32_t varPulse; // Объявляем переменную для хранения длительности импульсов с датчика
float varResult = 0; // Определяем переменную для хранения рассчитанной скорости потока воды
float Obem = 0.0; // Объявляем переменную для хранения рассчитанной скорости потока воды
float Doza = 25.0;
#define CLOCK_PIN 7
#define RESET_PIN 5
#define POT_PIN A5
int buttonPin = 12; // номер входа, подключенный к кнопке
int Motor = A4; // номер выхода мотора
const int ZeroButton = 9; //кнопка концевика
int buttonState = 0; // переменная для хранения состояния кнопки
int ZeroState = 0; // значение концевика
int Stakan1Pin = 6; // датчики обнаружения стаканов
int Stakan2Pin = 4;
int Stakan3Pin = 3;
int Stakan1 = 0; // значения датчиков обнаружения стаканов
int Stakan2 = 0;
int Stakan3 = 0;
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, A0, A2, A1, A3);
volatile uint32_t varTime = 0;
/*
Функция resetNumber обнуляет текущее значение
на счётчике
*/
void resetNumber()
{
// Для сброса на мгновение ставим контакт
// reset в HIGH и возвращаем обратно в LOW
digitalWrite(RESET_PIN, HIGH);
digitalWrite(RESET_PIN, LOW);
}//
/*
Функция showNumber устанавливает показания индикаторов
в заданное неотрицательное число `n` вне зависимости
от предыдущего значения
*/
void showNumber(int n)
{
// Первым делом обнуляем текущее значение
resetNumber();
// Далее быстро «прокликиваем» счётчик до нужного
// значения
while (n--) {
digitalWrite(CLOCK_PIN, HIGH);
digitalWrite(CLOCK_PIN, LOW);
}
}//
//Функция разлива
void Razliv(float Doza1) {
digitalWrite(Motor, HIGH);
//delay(3000);
Obem = 0;
varTime = millis();
while (Obem < Doza1)
{
varPulse = pulseIn(pinSensor, HIGH, 1000000); // Считываем длительность импульса, но не дольше 0,2 сек
//varPulse = pulseIn(pinSensor, HIGH, 200000);
if (varPulse) {
varResult = 0.125 * uint8_t(10000000 / (98 * 2 * varPulse)); // Если длительность импульса считана, то рассчитываем скорость потока воды: Q = 1000000/(15L) л/мин
Obem = Obem + varResult;
}
else {
varResult = 0; // Если длительность импульса не считана, то считаем что скорость потока воды = 0 л/мин
}
if ((varTime + 10) < millis() || varTime > millis()) {
varTime = millis();
Serial.println((String) "CKOPOCTb = " + varResult + " L/MIN"); // Выводим скорость потока воды, показания которой будут меняться после каждого импульса
Serial.println((String) "Ob'em = " + Obem + " mL");
}
}
digitalWrite(Motor, LOW);
}
void setup() { //
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
pinMode(pinSensor, INPUT); // Конфигурируем вывод к которому подключён датчик, как вход
pinMode(buttonPin, INPUT);
pinMode(Stakan1Pin, INPUT);
pinMode(Stakan2Pin, INPUT);
pinMode(Stakan3Pin, INPUT);
pinMode(Motor, OUTPUT);
digitalWrite(Motor, LOW);
pinMode(RESET_PIN, OUTPUT);
pinMode(CLOCK_PIN, OUTPUT);
pinMode(POT_PIN, INPUT);
pinMode(ZeroButton, INPUT);
// set the speed at 60 rpm:
myStepper.setSpeed(12);
// Обнуляем счётчик при старте, чтобы он не оказался
// в случайном состоянии
resetNumber();
Doza = 0;
}
//
void loop() {
int rotation, nalivat1, okr;
// Определяем ноль отсчета поворота руки
ZeroState = digitalRead(ZeroButton);
while (ZeroState == 0)
{
myStepper.step(0.003 * stepsPerRevolution);
ZeroState = digitalRead(ZeroButton);
}
digitalWrite(A0, LOW);
digitalWrite(A2, LOW);
digitalWrite(A1, LOW);
digitalWrite(A3, LOW);
//myStepper.stop;
// считываем в rotation напряжение с потенциометра:
// микроконтроллер выдаст число от 0 до 1023
// пропорциональное углу поворота ручки
rotation = analogRead(POT_PIN);
// в nalivat1 записываем полученное ранее значение rotation
// делённое на 10.3. Поскольку в переменных мы пожелали хранить
// целые значения, дробная часть от деления будет отброшена.
// В итоге мы получим целое число от 0 до 255
nalivat1 = rotation / 10.3;
okr = nalivat1 % 5; // Округляем значение до 5
if (okr != 0) {
nalivat1 = nalivat1 + 5 - okr;
}
if (nalivat1 == 100) {
nalivat1 = 99;
}
if (Doza != nalivat1) { // Сравниваем новое значение полученное с потенциометра с предыдущим
Doza = nalivat1; // Записываем новое значение
showNumber(Doza); // Отображаем новое значение
}
// считываем значения с входа кнопки
// varTime = millis();
buttonState = digitalRead(buttonPin);
if (buttonState == 1)
{ //delay(20);
if ((varTime + 20) < millis() ) {
varTime = millis();
buttonState = digitalRead(buttonPin);
if (buttonState == 1) // Выполнение основного кода программы при нажатой кнопки разлива
{
myStepper.step(-0.09 * stepsPerRevolution);
Stakan1 = digitalRead(Stakan1Pin);
if (Stakan1 == 1) {
Razliv(Doza);
}
myStepper.step(-0.15 * stepsPerRevolution);
Stakan2 = digitalRead(Stakan2Pin);
if (Stakan2 == 1) {
Razliv(Doza);
}
myStepper.step(-0.14 * stepsPerRevolution);
Stakan3 = digitalRead(Stakan3Pin);
if (Stakan3 == 1) {
Razliv(Doza);
}
}
}
}
//
}
[/code]
Схема расчитана на 6 рюмок. Выведены разъемы подключения на концевики, MP3 модуль, экран, светодиодную ленту , серво, насос .
Сбрось схему и скетч в личку если не жалко.forthomo@yandex.ru
Ответил в почту.
Ответил в почту.
а можно и мне nikolajyashkin@ya.ru
Ответил в почту.
Схемы у меня нет. Я их не очень люблю рисовать ) На печатной плате есть все элементы, которые необходимы.
По поводу скетча, не вижу смысла пока плодить тут разнообразие. Тем более, что экран который я использую, очень специфичен. И переделывать придется достаточно много. Проще взять любой из последних скетчей , выложенных тут , и поменять analogRead на digitalRead.
Вот ссылки на комплектующие, может пригодится кому.
если не трудно подпиши что где, потом добавлю на Я диск.
https://ru.aliexpress.com/item/32969220231.html - Nano Mini USB с Загрузчиком совместимый Nano 3,0 контроллер CH340 USB драйвер 16 МГц Nano v3.0 ATMEGA328P
https://ru.aliexpress.com/item/32821121484.html - 1 шт. 1 канал 24 В релейный модуль щит с оптроном поддержка высокого и низкого уровня триггера модуль питания для arduino
https://ru.aliexpress.com/item/32902208606.html - WAVGAT DC6-12V R385 аквариум круглый водяной воздушный насос с постоянным током аквариумные воздушные насосы аксессуары
https://ru.aliexpress.com/item/32924594679.html - Kebidumei 2X18650 USB power Bank зарядное устройство чехол DIY коробка для телефона повербанк для iPhone Портативная зарядка Внешняя батарея
https://ru.aliexpress.com/item/32835898778.html - 2 шт. EC11 энкодер аудио цифровой потенциометр с выключателем ручки 20 мм EC11 переключатель
https://ru.aliexpress.com/item/32809175063.html - 2019 LiitoKala HG2 18650 3000 мАч заряжаемая электронная сигарета батарея высокой разрядки, 30A большой ток + DIY nicke
https://ru.aliexpress.com/item/33026447179.html - 2 дюйма 4ohm 3 Вт полный спектр мини Динамик для стерео звук Динамик коробка аксессуары «сделай сам»
https://ru.aliexpress.com/item/32956009458.html - WS2812B DC 5V Светодиодные ленты RGB 50 см 1 м 2 м 3 м 4 м 5 м 30/60/144 светодиодный s смарт Пиксельная адресация чёрно-белые печатные платы WS2812 IC 17Key бар
https://ru.aliexpress.com/item/32948823768.html - 1 шт. новые SG90 Servo мини микро 9g для дистанционно управляемых вертолетов самолетов пенный самолет автомобиль Лодка горячая Распродажа 2018
https://ru.aliexpress.com/item/32655318932.html - 1 шт. мини mp3-плеер модуль с упрощенным выходом динамик MP3-TF-16P для arduino DIY KIT
https://ru.aliexpress.com/item/1605337399.html - Оригинальный XL6009 DC-DC модуль усилителя Мощность Модуль питания Выход регулируется Супер LM2577 Повышающий Модуль
https://ru.aliexpress.com/item/4000036567119.html - 5 шт., инфракрасный линия трек датчик слежения TCRT5000 препятствие Avoidanc AVR ARM PIC DC 5V
https://ru.aliexpress.com/item/32968385247.html - Белого и синего цвета цвет 128X64 O светодиодный ЖК-дисплей светодиодный Дисплей модуль для Arduino 0,96 I2C IIC Серийный новый оригинальный с CaseI
добрый день, подскажите как можно подключить вот такой дисплей
Как я понял у него есть два режима работы, spi и i2c, но как их переключить не понял, заранее спасибо (дисплей 0,96' oled ssd1306 12864 spi i2c 2,2-5,5v белый)
Схема DFPlayer https://yadi.sk/i/kRdb5E8vFc5MzA
Как я понял у него есть два режима работы, spi и i2c, но как их переключить не понял, заранее спасибо (дисплей 0,96' oled ssd1306 12864 spi i2c 2,2-5,5v белый)
Каждый производитель, выпускают свою печатные плату с различной компоновкой электронных компонентов и выведенным интерфейсом, так-как контроллер SSD1306 поддерживает сразу три протокола работы:
► 8-bit 6800/8080-series parallel interface
► 3 /4 wire Serial Peripheral Interface
► I2C
Для изменения протокола работы, предусмотрены три линии BS0, BC1 и BS2 с помощью которых, контроллер дисплея определяет по какому протоколу ему работать. В моем случаи, OLED дисплей разработан для работы по одному протоколу I2C, в других вариантов, возможно смена протокола работы с помощью нулевых резисторах или DIP переключателей.
Запроси схему у продавца.
Все есть в Инете.
добрый день, подскажите как можно подключить вот такой дисплей
нужно перепаять нулевые резисторы на R1,R4,R8.
там же написано на плате
С R3 нужно убирать резистор?
С R3 нужно убирать резистор?
да
С R3 нужно убирать резистор?
да
Спасибо чуть позже отпишусь получилось или нет
спасибо,попробую. от меня новая нарезка тостов.правда текст приходится выводить не полностью,но может кому пригодится.
https://yadi.sk/d/iBAHJ_Fq8le9NQ
31 и 37 особенно колоритные, добавляю себе.
Добавил:
У тебя третья строчка правильно отображается? У меня почему то"иаметлте" стало,хотя сначала всё нормально было.при чём начинает отображать правильно и сразу же меняется на эту ерунду
эта?
lcd.print(F(
"ЗАМЕТЬТЕ, НЕ Я"
));
эта?
lcd.print(F(
"ЗАМЕТЬТЕ, НЕ Я"
));
Да.перепробовал все варианты, даже оставлял только один этот тост, не помогло
Вот так попробуй:
Коллеги, подскажите. Есть скетч для замера напряжения на акуме через делитель и выводом на 7й и 6йпиксель светодиодной ленты компилятор выдает вот такую ошибку : expected ';' before '{' token (не хватает ; перед { ) на 41 строчку, однако если закоментировать с 41 по44 строчку компиляция проходит без ошибок. Что не так?
Коллеги, подскажите. Есть скетч для замера напряжения на акуме через делитель и выводом на 7й и 6йпиксель светодиодной ленты компилятор выдает вот такую ошибку : expected ';' before '{' token (не хватает ; перед { ) на 41 строчку, однако если закоментировать с 41 по44 строчку компиляция проходит без ошибок. Что не так?
После else условие не указывается
Так?
Так?
Вот так :
Спасибо! а обязательно заканчивать "if" "else" или можно "else if" ?
Спасибо! а обязательно заканчивать "if" "else" или можно "else if" ?
Не обязательно. Все зависит от того что мы хотим получить.
Если в вашем примере procent вдруг по какой то причине будет чуть больше 100 ни одно из условий не выполнится . А вероятность такой ситуации очень велика. Можно было бы записать последним условием else if ( procent >= 80 ) , тогда это былобы аналогично else в данном примере. Мне конструкция с else больше нравиться.
Forthomo могу тебе отправить "брата,", просто сломался корпус у основания, сам паяльник рабочий.
или пришли мне свой... почта мой_ник@mail. ru
Если не трудно будет, выложите фото в собранном виде
Подскажите может кто-то делал наливатор с дисплеем ssd1306 по протоколу spi
А смысл , если можно по i2c ? Меньше использованных пинов ардуино, которых и так дефицит ))
В гугле полно инфы по SPI дисплеям и ардуино , первое что попалось
https://voltiq.ru/oled-128x64px-spi-and-arduino/
Все сделал не работает
По spi подключал все работает (тест) а i2c не хочет
Нашел инфу вот эту только нечего не понял, может кто-нибудь поможет http://microsin.net/adminstuff/hardware/ssd1306-oled-controller/Pechat.html
Ссылка раз
Cсылка два
Разжевано все до мелочей, даже есть примеры как текст выводить.
Я все понимаю, но это 4pin , a у меня 7pin
да, это я ошибся , по i2c скинул последние две ссылки.
Ну а предыдущая ? https://voltiq.ru/oled-128x64px-spi-and-arduino/
Здесь же все понятно.
У тебя 4-SPI , это даже на дисплее написано.
Держи документ https://yadi.sk/i/useI_yjqeJkzEQ
подписка
Модуль реле разве на 24v нужен для проекта? На 5v не подойдет что ли?
Модуль реле разве на 24v нужен для проекта? На 5v не подойдет что ли?
Подойдёт
Благодарю.
Forthomo могу тебе отправить "брата,", просто сломался корпус у основания, сам паяльник рабочий.
или пришли мне свой... почта мой_ник@mail. ru
Коллега спасибо за поддержку непродолжительного траура. Теперь буду использовать самодельную паяльную станцию, фото постом ниже, лет 5 пылилась.
Всем добрый вечер! У меня такой глюк периодически появляется:
При кратковременном нажатии кнопки громкости должен проигрывать следующий тост, вообщем у меня 50 на 50, или проигрывает нормально, или тосты начинает проигрывать непрерывно, пока питание не сбросишь, у всех так? И вопрос, может поставить переменный резюк или энкодер заместо кнопок?
Можно усилитель дополнительно поставить, но к другим выводам плеера подключить на схеме это есть. Такой глюк с зацикливанием не замечал. Возможно это связано с питанием.
Мужики.Есть схема и скетч на похожий на ваш девайс,но с расходомером и вместо сервы шаговый двигатель и непонятным для меня индикатором из 7 сигментным индикатором.Не могли бы вы для меня и не только помочь переделать скетч и схему под lcd дисплей и mp3 тосты[code]
flam, прочитайте тему целиком и попадете в папку или в две, со схемой, рабочими скетчами и прочее... Заодно скетчи научитесь выкладывать чтобы другие прочитать могли, и без обид...
"с расходомером и вместо сервы шаговый двигатель" - это наверное будет несколько другой проект, если присоединяться энтузиасты.
Тему вашу,схемы и скетчи последние просмотрел полностью.Спасибо вам что так токрыто делитесь этим.
научился скетчи выкладывать?
Уже хорошо, свернуть забыл. Нашел схему и скетчи?
которые на Ядиске?Да