Search the Community
Showing results for tags 'arduino nano'.
-
Приветствую дорогое сообщество, прошу помощи в реализации проекта- дрифт трайка для детворы, а именно в создании контроллера для мотор-колеса управляемого с ардуино. Сам трайк я построил еще летом, и тогда использовал дешевый китайский контроллер для запуска двигателя, вот пробный заезд как видно из видео, мне необходимо отталкиваться чтобы стартануть, это происходит из за отсутствия датчиков холла, и мой вес ему трудно сдернуть с места чтобы потом понимать куда крутиться колесо и уже его дальше крутить. С того времени было решено построить свой контроллер для управления, а также был сделан апгрейд колеса и встроены датчики холла. Так как времени было всегда в обрез, занимался мало этим делом, но вот, праздники и можно малость поработать. Для начала подключил датчики холла к ардуине, убедился что прилетают все данные и написал простую программу по вращению колеса. Данная программа работает без проблем с моторчиком от сдрома - проверенно, прилагаю... //throttle const int analogInPin1 = 22; //hall input int hall_sensor_a = 7; int hall_sensor_b = 2; int hall_sensor_c = 4; //Motor setup const int a_motor_lout = 3; const int a_motor_pwm_hout = 9; const int b_motor_lout = 6; const int b_motor_pwm_hout = 11; const int c_motor_lout = 10; const int c_motor_pwm_hout = 5; void setup(){ // Serial.begin(9600); pinMode(a_motor_lout, OUTPUT); pinMode(a_motor_pwm_hout, OUTPUT); pinMode(b_motor_lout, OUTPUT); pinMode(b_motor_pwm_hout, OUTPUT); pinMode(c_motor_lout, OUTPUT); pinMode(c_motor_pwm_hout, OUTPUT); pinMode(hall_sensor_a, INPUT); pinMode(hall_sensor_b, INPUT); pinMode(hall_sensor_c, INPUT); } void loop(){ /* int A; A = 11111; Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ while(1){ int val = analogRead(analogInPin1); val = constrain(val, 211, 830); int thLevel = map(val, 211, 830, 50, 0); if ( thLevel <= 45){ // int thLevel = 0; delay(thLevel); if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_pwm_hout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,1);digitalWrite(c_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==1){ digitalWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0); digitalWrite(b_motor_pwm_hout,1);digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(a_motor_lout,1); digitalWrite(b_motor_lout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,1);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,1);digitalWrite(b_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,1); delay(thLevel);} }}}}} } else{ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0); }}} далее имеются в руках только N-channel мосфеты STP75NF75 которые решил завести с помощью драйвера HIP4086 нарисовал схему, вытравил плату, так как не очень удобно было к его ногам прицепиться(хотя пытался), пытаюсь запустить, а он не подает жизни :(. На двух выходах драйвера к мосфетам всегда высокий уровень(+12), и что бы я не подавал на входы, все молчит. Ранее когда пытался завести похожее но на базе транзисторов, то хоть мотор ногами дергал, но не крутился, а сейчас вообще тишина. Ни мосфеты, ни другие элементы на плате не греются. Не могу ума приложить что не так тут и как проверить еще... Буду признателен за любые комментарии.
- 51 replies
-
Нужна помощь, так случилось, что я никак не связан с радиотехникой и т.д, но мне нужно сделать перчатку (тема дипломной работы) по видео AlexGyver, которая по сути и есть стробоскопом на базе Arduino nano. И я её кое-как спаял и конечно же она не работает, причины искать нет смысла, потому что может быть всё что угодно. Подскажите мне как можно упростить это устройство чтобы я его смог сделать, что-то проще, желательно схему иначе я не справлюсь. Вот то видео: https://www.youtube.com/watch?v=rLpn_4ERJXQ
- 12 replies
-
- arduino
- arduino nano
-
(and 2 more)
Tagged with:
-
Arduino NANO (CH380). Схема питается от 4-х АА элементов через такой преобразователь http://roboparts.ru/products/dc-step-up-2v-5v-2a Соответственно, если АА - это новые батарейки, то напряжение может быть около 6,5В. Можно ли их подать на порт +5В? Что будет? А в качестве USB-питания можно?
- 12 replies
-
- Arduino NANO
- питание
-
(and 2 more)
Tagged with:
-
Взял с места практики отладочную плату с атмегой 32-й, дома понял (возможно), что микроконтроллер заблокирован. Пытался шить через USBASP при помощи AVRDUDE, однако ошибка: avrdude.exe: error: programm enable: target doesn't answer. 1 avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. В правильности и надежности подключения полностью уверен, проверил каждый контакт и каждый элемент на всей плате тестером. Кстати, вот она: У меня точно такая же, только с Atmega32A. Попробовал поставить на нее дрова, но теперь она определяется вот так: Неизвестное USB-устройство (сбой дескриптора устройства). Из этой статьи по решению данной проблемы выполнил все указания, однако ничего не сработало. Тут я подумал на отключенный rst выход, так как был опыт из-за путаницы с обратными и прямыми фьюзами на Attiny13A. Тогда быстренько все исправил высоковольнтным программатором из этой статьи, вот и подумал сделать здесь подобное. Немного (чуть больше) полазив в интернете нашел вот такую схему на arduino. Все есть, чтобы ее сделать, только сперва понять бы, можно или нет без выпаивания это делать. И еще понять бы, в этом ли настоящая проблема? Или может я что-то не то надумал? Надеюсь на вашу помощь
-
Хочу собрать умный сетевой фильтр на 5 розеток (1-постоянно включена, 1 регулируемая по времени, 3 регулируются датчиком AM2320). Всё это будет внутри корпуса сетевого фильтра. Помощь Ваша мне нужна на всём этапе сборки и программирования. 1 с чего начну: Tiny RTC 1307 подключил по I2C, на эти же пины А4,А5 посадил AM2320 также по I2C. Это правильный подход? I2C: 4 (SDA) and 5 (SCL). Support I2C (TWI) communication using the Wire library. Есть ли у кого набор готовых скетчей по данной конфигурации?
- 1 reply
-
- arduino nano
- 1307
-
(and 2 more)
Tagged with:
-
Приветствую радиолюбители!Проблема такая,решил собрать пульсоксиметр,но т.к это моя первая работа на Arduino Nano,возникли трудности. Собираю по этой статье Единственное отличие у них стоит oled display 0.91 у меня 0.96. Не могу разобраться,с какой библиотекой работать u8g2lib или u8glib.Какой дисплей мне выбрать и тд. Ссылка на библиотеку MAX30100 клик #include <CircularBuffer.h> #include <MAX30100.h> #include <MAX30100_BeatDetector.h> #include <MAX30100_Filters.h> #include <MAX30100_PulseOximeter.h> #include <MAX30100_Registers.h> #include <MAX30100_SpO2Calculator.h> #include <U8g2lib.h> #include "MAX30100_PulseOximeter.h" #include <Wire.h> #define REPORTING_PERIOD_MS 500 U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0); // PulseOximeter is the higher level interface to the sensor // it offers: // * beat detection reporting // * heart rate calculation // * SpO2 (oxidation level) calculation PulseOximeter pox; const int numReadings=10; float filterweight=0.5; uint32_t tsLastReport = 0; uint32_t last_beat=0; int readIndex=0; int average_beat=0; int average_SpO2=0; bool calculation_complete=false; bool calculating=false; bool initialized=false; byte beat=0; // Callback (registered below) fired when a pulse is detected void onBeatDetected() { show_beat(); last_beat=millis(); } void show_beat() { u8g2.setFont(u8g2_font_cursor_tf); u8g2.setCursor(8,10); if (beat==0) { u8g2.print("_"); beat=1; } else { u8g2.print("^"); beat=0; } u8g2.sendBuffer(); } void initial_display() { if (not initialized) { u8g2.clearBuffer(); show_beat(); u8g2.setCursor(24,12); u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.print("Place finger"); u8g2.setCursor(0,30); u8g2.print("on the sensor"); u8g2.sendBuffer(); initialized=true; } } void display_calculating(int j) { if (not calculating) { u8g2.clearBuffer(); calculating=true; initialized=false; } show_beat(); u8g2.setCursor(24,12); u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.print("Measuring"); u8g2.setCursor(0,30); for (int i=0;i<=j;i++) { u8g2.print(". "); } u8g2.sendBuffer(); } void display_values() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_smart_patrol_nbp_tf); u8g2.setCursor(65,12); u8g2.print(average_beat); u8g2.print(" Bpm"); u8g2.setCursor(0,30); u8g2.print("SpO2 "); u8g2.setCursor(65,30); u8g2.print(average_SpO2); u8g2.print("%"); u8g2.sendBuffer(); } void calculate_average(int beat, int SpO2) { if (readIndex==numReadings) { calculation_complete=true; calculating=false; initialized=false; readIndex=0; display_values(); } if (not calculation_complete and beat>30 and beat<220 and SpO2>50) { average_beat = filterweight * (beat) + (1 - filterweight ) * average_beat; average_SpO2 = filterweight * (SpO2) + (1 - filterweight ) * average_SpO2; readIndex++; display_calculating(readIndex); } } void setup() { Serial.begin(115200); u8g2.begin(); pox.begin(); pox.setOnBeatDetectedCallback(onBeatDetected); initial_display(); } void loop() { // Make sure to call update as fast as possible pox.update(); if ((millis() - tsLastReport > REPORTING_PERIOD_MS) and (not calculation_complete)) { calculate_average(pox.getHeartRate(),pox.getSpO2()); tsLastReport = millis(); } if ((millis()-last_beat>10000)) { calculation_complete=false; average_beat=0; average_SpO2=0; initial_display(); } }
-
Кто может сделать или переделать скетч часов с индикацией светодиодными матрицами 8х8 с драйверами max7219 (число матриц, переключаемое при прошивке в контроллер, 4х1 или 4х2) ? Основа- arduino nano + rtc-ds3231+4 кнопки управления. Должны индицировать статично Часы-Минуты-Секунды, и динамично- бегущей строкой Число-Месяц-Год-День недели, плюс 4 служебных сообщения(по одному, с циклом 4 в дня). Настройка-установка времени, содержимого сообщений, яркости индикации, скорости вывода бегущей строки... Наличие будильников приветствуется, но не обязательно.
- 6 replies
-
- rtc ds3231
- arduino nano
-
(and 3 more)
Tagged with:
-
Вообщем натолкнулся на чужой проект под названием "Большие настенные часы с автояркостью на Arduino" http://instructables...syi-na-arduino/. Решил повторить данный проект, уж больно приглянулся результат Заказал все комплектующие. В создании самого табло проблем не возникло, но вот как дошло дело до Arduino, тут процесс и остановился, мои познания в Arduino нулевые ну или около того. Проблема в том, что автор статьи пару раз ответил по вопросам связанным с проектом и пропал. Думал разобраться будет не сложно, но как оказалось на деле не все так просто, как мне казалось. А именно не выходит записать выложенный в статье скетч в мою Arduino Nano. Уже гугл от меня устал но так и не понял почему скетч не хочет компилится (выдает exit status 1 no matching function for call to ‘CFastLED::addLeds(CRGB [29], int)’). То ли библиотек каких не хватает, то ли они нынче имеют другие названия (устал их качать пачками ), то-ли из-за того что Arduino моя на CH340, то-ли софт с новой версией не катит. (хотя пробовал и на старых версиях ArduinoIDE). Ни че не понятно, спасайте бедолагу Просто жалко столько времени убил на реализацию табло, а на программной части такая засада.
- 7 replies
-
- скетч
- Arduino Nano
-
(and 1 more)
Tagged with:
-
Всем Привет! С Праздниками! Прошу помощи с Arduino Nano. Возникла острая необходимость изменить VIP и PID. Подскажите, натолкните на верный путь пожалуйста. Были закуплены 10 nano из китая, спаяны, а оказалось они все с одинаковыми VID и PID, но присутствует необходимость их различать именно по данным номерам. На сколько я понял необходимо бутлоадер перезаливать, с помошью cp2102 c DTR сигналом - судя по информации из гугл не удастся. Необходим FTDI. Так ли это? Или это возможно сделать прямо из Arduino IDE изменив какие то файлы?
- 8 replies
-
- pid vid
- arduino nano
-
(and 3 more)
Tagged with:
-
Комплекты плат для аппарата точечной сварки на основе Arduino Nano. Делал сам. Размер каждой платы - 50 х 60 мм., с металлизацией, с зелёной паяльной маской, с шелкографией, с лужением. Стоимость - 950 руб. - включая доставку почтой по России. С доплатой можно доставить и за пределы. Пишите на pcbsmac@gmail.com или в личку.
- 1 reply
-
- arduino nano
- сварка
-
(and 1 more)
Tagged with:
-
Доброго времени суток. Встал вопрос насущный. Собираю я незамысловатый лазерный гравер из двух DVD. Требуется из 2х старых DVD шаговиков сделать оси Х и Y. Для этого было решено использовать Easy Driver. Но немогу нигде найти распиновку и верную схему подключения шаговика к драйверу. Понимаю, что шаговики могут быть разные, но куда рыть? Нужно ли доп питание? Как определить что за шаговик у меня? Заранее спасибо.
- 7 replies
-
- EasyDriver
- arduino nano
-
(and 1 more)
Tagged with: