Ви не увійшли.
KAS пише:Дуже все швидко розвивається, на мою думку книги це не варіант, якщо лише для самої бази.
А так бажання, гугл та чат GPT в допомогу!Для разового створення пристрою так підійде й Chat GPT, але якщо хочеш щось більше, по типу розробляти власні пристрої чи взагалі стати Embedded інженером/розробником то списування далеко не варіант
Так в чаті не обов'язково списувати, з ним набагато простіше навчатися, наприклад закинути приклад коду якогось в якому не можешь розібратися і він розпише тобі що в ньому відбувається і т.п.
Дуже все швидко розвивається, на мою думку книги це не варіант, якщо лише для самої бази.
А так бажання, гугл та чат GPT в допомогу!
Нету датчика на руках, но вроде как сырые данные (mx, my) не должны быть отрицательными, попробуй откалибровать датчик:
#include "Wire.h"
#include "HMC5883L.h"
HMC5883L mag;
void setup() {
Wire.begin();
Serial.begin(9600);
mag.initialize();
Serial.println("Move the magnetometer in all directions to calibrate...");
delay(2000);
}
void loop() {
static int16_t minX = 0, minY = 0, minZ = 0;
static int16_t maxX = 0, maxY = 0, maxZ = 0;
int16_t x, y, z;
mag.getHeading(&x, &y, &z);
if (x < minX) minX = x;
if (x > maxX) maxX = x;
if (y < minY) minY = y;
if (y > maxY) maxY = y;
if (z < minZ) minZ = z;
if (z > maxZ) maxZ = z;
// Print the raw values and the calibration range
Serial.print("Raw: X="); Serial.print(x);
Serial.print(" Y="); Serial.print(y);
Serial.print(" Z="); Serial.print(z);
Serial.print(" Calibrated Range: X["); Serial.print(minX); Serial.print(", "); Serial.print(maxX); Serial.print("]");
Serial.print(" Y["); Serial.print(minY); Serial.print(", "); Serial.print(maxY); Serial.print("]");
Serial.print(" Z["); Serial.print(minZ); Serial.print(", "); Serial.print(maxZ); Serial.println("]");
delay(200);
}
}
после чего запиши максимальные и минимальные значения для каждой оси в новый код:
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
#include "HMC5883L.h"
MPU6050 accelgyro;
HMC5883L mag;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int16_t mx, my, mz;
#define LED_PIN 13
bool blinkState = false;
// Задайте значения из калибровки для коррекции
int16_t minX = -100; // Замените значения на те, что получены в калибровке
int16_t maxX = 100;
int16_t minY = -100;
int16_t maxY = 100;
int16_t minZ = -100;
int16_t maxZ = 100;
void setup() {
Wire.begin();
accelgyro.setI2CMasterModeEnabled(false);
accelgyro.setI2CBypassEnabled(true);
accelgyro.setSleepEnabled(false);
Serial.begin(38400);
// initialize device
Serial.println("Initializing I2C devices...");
accelgyro.initialize();
mag.initialize();
Serial.println(mag.testConnection() ? "HMC5883L connection successful" : "HMC5883L connection failed");
// verify connection
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
// configure Arduino LED for
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Чтение данных с акселерометра и гироскопа
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
// Чтение данных с магнетометра
mag.getHeading(&mx, &my, &mz);
// Коррекция сырых данных магнетометра с помощью значений из калибровки
mx = constrain(mx, minX, maxX);
my = constrain(my, minY, maxY);
mz = constrain(mz, minZ, maxZ);
// Вывод данных на монитор последовательного порта
Serial.print("a/g: ");
Serial.print(ax); Serial.print("t");
Serial.print(ay); Serial.print("t");
Serial.print(az); Serial.print("t");
Serial.print(gx); Serial.print("t");
Serial.print(gy); Serial.print("t");
Serial.print(gz); Serial.print("t");
Serial.print("mag: ");
Serial.print(mx); Serial.print("t");
Serial.print(my); Serial.print("t");
Serial.print(mz); Serial.print("t");
// Вычисление и вывод направления (heading) в градусах
float heading = atan2(my, mx);
if (heading < 0)
heading += 2 * PI;
Serial.print("heading: ");
Serial.println(heading * 180 / PI);
// Мигание светодиода для индикации активности
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);
delay(500);
}
У Gyiver очень неплохие видеоурок и текстовые статьи на сайте
Вот, если интересно, стоит такая задача,.- шаговое управление электропечью, не путать с ПИД регуляторами, которыми рынок насыщен. А из указанных шаговых контроллеров на рынке Украины есть всего три модели и никакого гарантийного и послепродажного обслуживания нет, т.е. в случае поломки или сбоя в прошивке обращаться не к кому. Ну и функционал не совсем тот что мне нужен. Чего я хочу,: - Первое что должна уметь система, измерять температуру по двум каналам и усреднять полученное значение,(диапазон измеряемых температур 0- +1000 гр. Термопара ТХА) Второе, управляемая скорость нагрева и охлаждения печи с линейной зависимостью температура - время, например мне надо нагреть печь до +120 гр. за 120 минут, то есть производим нагрев со скоростью 1 градус в минуту или снизить температуру с +550 до +400 гр. за 150 ЧАСОВ т.е. скорость охлаждения 1 градус в час. Третье, Точность измерения и индикации 1 градус, а лучше до десятой доли градуса (если возможно) соответственно и точность удержания температуры в пределах 1 градуса.(фабричные контроллеры умеют это делать, по крайней мере заявляют что умеют).Четвертое - управление нагрузкой - плавное, по двум каналам на твердотельных реле, мощность тэнов в каждом канале 3000 Вт, при чем вторая группа нагревателя вспомогательная и подключается при отклонении температуры нагрева от заданной. Пятое, - калибровка, по скольку масса садки каждый раз будет разная соответственно и и теплоемкость будет меняться, поэтому скорее всего прийдется делать макетные загрузки и замерять скороподъемность температуры, и только потом задавать программу нагрева охлаждения, т.е. в режиме калибровки просто меряем температуру и работает таймер. Индикация и управление, Хочется иметь цветной дисплей и количество кнопок больше трех, задавая температуру и время не перелистыванием значений, а непосредственно вводя необходимые значения.
Если у Вас производство, то я бы смотрел в сторону промышленного оборудования нормального. Если речь одна то можно ещё подумать за поделки на Ардуино, но точно так же у Вас нету никакой гарантии и гарантии что когда вам понадобится человек выйдет на связь.
Ну думаю если вы впаяли 10 Ом 1 ватт то работать будет без проблем тоже
Думаю что на 10 Ом, но перед его заменой нужно ещё варистор проверить
42 кнопки на один пин в принципе возможно если только одна из них будет срабатывать, а у вас будут проблемы с определением какая нажата. Хотя, если почитать задачу изначальную, сбили мишень проиграли мелодию и по барабану какую именно то как вариант с резисторами можно что-то придумать. Но надёжнее конечно будет поставить расширители портов
Вот, начинаете в правильном направлении двигаться. Какой расстояние между мишенями примерно планируется?
ArduinoDroid с плеймаркета?
Так вот. Спалил я этот , будь он неладен (по факту так и есть) DFplayerMP3mini ))). Перепутал пин, дал питание на соседний, и не заметил, пока не прикоснулся к нему случайно и обжёгся! От перегрева и деформации кармана карта памяти выскочила оттуда, и при вставлянии обратно уже не фиксируется. Остывал сей плеер минут 15 - такой горячий был. А другого нет пока что... Но то не беда, продолжение будет!
В поисках чего-то понадёжнее (нареканий на качество звучания этого плеера в сети очень много), натолкнулся на шилд
MP3 Shield на чипе VS1053 для ардуино. Вот тут (https://www.mini-tech.com.ua/mp3-shield-dlya-arduino) нашел описание, но не достаточно для меня ёмкое и понятное. Может, кто работал с таким шилдом? Как качество? Нуждается в УНЧ, или среднюю громкость (скажем, как телевизор дома обычно) обеспечит? Совместим ли с Ардуино Мега? Ну, или ещё какая полезная информация, может есть...
Просто цена на него заметно выше чем на DFplayerMP3mini, не хочется покупать и проверять, а надо ли оно мне.
И можно ли заменить АрдуиноМега чем-то менее брендированым, недорогим?
Так вроде мега не сильно дорогая, если опасаетесь за нее возьмите нано для экспериментов
KAS пише:ИгорьОдесса пише:Месяц примерно. Это нормально?
В принципе, можно сроки обсуждать.Ясно, в месяц не впишусь, сейчас много основной работы
А во сколько впишетесь? Я ведь написал, что можно обсуждать.
На пишите на телеграмм, обсудим
@K_A_S_89
Месяц примерно. Это нормально?
В принципе, можно сроки обсуждать.
Ясно, в месяц не впишусь, сейчас много основной работы
KAS пише:ИгорьОдесса пише:Тут я пока не решил. Либо приложение на смартфон, либо небольшой управляющий блок понадобится. Дело в том, что буквально утром обсуждали возможность использования этих мишеней на "Тропе разведчика", и там может понадобиться их установка в комнате, в которую будет входить человек. Его должен ловить датчик движения и включать мишени.
Ну тогда как вариант esp32 как управляющий контроллер + и ВЭБ морду на нем прикрутить для настроек и смены режимов
Увы, увы... мне это ни о чем не говорит. Поставить задачу я могу, но вот исполнение ее - не моя вахта. Я на этот форум для того и пришел, чтобы найти тех, кто возьмется за разработку и изготовление такой системы.
Какие сроки?
Тут я пока не решил. Либо приложение на смартфон, либо небольшой управляющий блок понадобится. Дело в том, что буквально утром обсуждали возможность использования этих мишеней на "Тропе разведчика", и там может понадобиться их установка в комнате, в которую будет входить человек. Его должен ловить датчик движения и включать мишени.
Ну тогда как вариант esp32 как управляющий контроллер + и ВЭБ морду на нем прикрутить для настроек и смены режимов
KAS пише:Прикольная затея)
Да. И ее надо реализовать!
Приложение на смартфон тоже нужно написать?
Прикольная затея)
То есть на всех одинаковый код и они получают только сигнал начала выполнения алгоритма и потом никак не связаны между собой?
leons пише:предлогали же написать или изучить программу flprog там всё просто ,пример ка выглядит подключение кнопок к трекам и от этих же кнопок к адресным диодам не сложнее
А не проще три строчки кода написать чем в этой мурзилке дольше квадратики рисовать будешь?
Ну каждому свое, если человек не очень знаком с си то ему проще соединить три квадратика и получить за 15 секунд рабочий скетч, тем более что три строчки точно маловато даже для blink
Переустановить arduino ide пробовали?
http://arduino.ua/art95-zapis-aydiofailov-na-mikroshemi-serii-isd1700
Ну если вам нет необходимости управлять интерактивно светодиодами, тогда и адрессные вам не нужны, просто светодиод при нажатой кнопке светиться и все, паралельно подаете сигнал на ардуинку, которая при отключении будет проигрывать мелодию
Кстати если сложно писать код в arduino iDE, можете попробовать FLPROG
А зачем адресные светодиоды? Я думал, проще будет запитать все светодиоды отдельно от Ардуино, а обнаруживать контроллером разрывы в цепях либо через транзисторы:
- если в цепи тока нет, транзистор открыт, и идёт сигнал, но нужно чтоб он был коротким, похожим на короткое нажатие кнопки - поможет ли здесь конденсатор ?; а если ток есть, то транзистор закрыт, и ардуина получает ноль на соотв.пин);
Либо через фотодиод расположенный рядом со светодиодом:
- освещенный фотодиод пропустит ток, ардуина получит на пин 1. Неосвещенный - не пропустит, ардуино получит 0.
Но это мне подсказывает мое интуитивное понимание процессов, вполне вероятно (и даже наверняка), что я чего-то не понимаю, или недопонимаю. Поэтому, подскажите - моё рассуждение, вообще, имеет право на жизнь? Или это , как у Макса Фрая, "забивание гвоздя с помощью микроскопа"?
Ну смотрите на скольок я понял что вы хотите сделать, 40 мишеней стоят на микровыключателях, если микрик включен значит мишень стоит и ее подсвечиваем. Если одна из мишеней упала то отключаем подсветку, проигрывыем мелодию?
Адресные светодиоды для того что бы испльзовать меньше выходов ардуины и меньше проводов тягать - это первое. Второе это дает вам допольнительную своюоду для вашей фантазии, допустим менять цвет подсветки, или подсвечивать определенную мешень другим цветом и при ее сбитии другой звук (типа бонусная) и т.д. и т.п.
1) я не очень-то инженер, много чего пока не понятно. Вообще, мой интерес к Ардуино появился совсем недавно, как путь решения вот этой идейки с тиром. Просто, попалось на глаза мне Ардуино, а не что-то другое))
2) может, я ошибаюсь, но мне кажется заинтересовывать сына практичнее с Ардуино из-за большого количества информации в сети, да и прямо скажем - модное слово Ардуино своё дело делает.
Конечно же, хорошо было бы посвятить самообразованию достаточное количество времени, но это пока в неконкретных планах.
Ну тогда Вам нужна любая в принципе ардуина, что бы не заморачиваться со входами-выходами что-то типо такого https://arduino.ua/prod1442-16-kanalnii-12-bit-pwmservo-modyl-s-i2c-interfeisom-na-pca9685 либо одресные светодиоды