#1 Re: Програмування Arduino » Потрібна допомога в написанні скетчу для планшетного прінтера » 2023-08-29 21:31:40

Вже готові вироби є. Там без Arduino, до компа по USB підключив, замість низу принтера дошка, шо рухається і погнав друкувати.
Мене колись з пантелику збили, просили зробити харчовий, я думав так і харчі прям з сопел мають  видалюватися на півбатона :-)

#2 Re: Апаратні питання » Чим замінити DFPlayer щоб якість звуку стала кращою? » 2022-05-23 13:29:26

Та який там HIEND в бюджетному авто, справа у тім що Si4703 і DFPlayer живиться від одного блоку живлення, під'єднано до одного попереднього підсилювача (NE5532) який свою чергу йде в кінцевий (PA2003A), в обох платах Si4703/DFPlayer не має свого підсилювача, по ідеї шуми/наводки мали б проявлятися по лінії радіо, але ніт.
MP3/FLAC це для всеядності магнітоли, закинув  на флеш скопом і слухаєш по порядку, чи як скетч запрограмував. Пріоритет зробити mp3 не гірше звичайної FM-трансляції.

#3 Re: Апаратні питання » Чим замінити DFPlayer щоб якість звуку стала кращою? » 2022-05-23 12:34:37

Ну прям напряму керувати кнопками плеєра з ардуїно. Самі плеєри ж можуть грати FLAC. На укран магнітоли виводиться тільки гучність і номер треку, обидва параметра змінюються двома енкодарими, принаймні у мну так.

#4 Апаратні питання » Чим замінити DFPlayer щоб якість звуку стала кращою? » 2022-05-19 20:57:23

Partyzan
відповідей: 4

Зробив собі автомагнітолу, все наче норм, але якість звуку з DFPlayer не дуже, радіо на Si4703 грає краще і шумів менше.
Чимось можна замінити DFPlayer, щоб покращити MP3 і додати FLAC? Розглядаю поки як варіант розібрати якийсь маленький MP3-плеєр типу Sony/Philips і нутро якось приладнати до пінів ардуїни, але то якось не правильно :-)

#5 Re: Програмування Arduino » DFPlayer використовуючи пін BUSY » 2022-02-03 21:30:44

Вивід на монітор пристуній. Але проблема сильно плаваюча, на даний момент грає 120 трек по порядку, без проблем. Ймовірно таки є якийсь нюанс з визначенням стану піна BUSY, принаймі такі вігдуки зустрічаються стосовно роботи DFplayer.

#6 Програмування Arduino » DFPlayer використовуючи пін BUSY » 2022-02-01 23:35:39

Partyzan
відповідей: 2

Використовуючи код:

                        if(play_state == HIGH) // читання стану піна BUSY
                            {
                                number++;
                                Track:
                                if (number>count_mp3){number=0;}
                                EEPROM.update(11,number);
                                LCD.clear();
                                LCD.setCursor(7, 0);LCD.print("Track:");LCD.print(number);  
                                LCD.setCursor(0, 0);LCD.print ("Vol:"); LCD.print (volume);
                                                           
                                if (number<=array_size_nameTrack)
                                    {
                                        LCD.setCursor(0, 1);
                                        LCD.print (nameTrack[number-1]);
                                     }
                              
                                if (number>array_size_nameTrack)
                                    {
                                        LCD.setCursor(3, 1);
                                        LCD.print ("MP3 Player"); 
                                    }
                              
                                 myDFPlayer.play(number);
                                 delay(700);
                            }

                        if (millis() - tmignore > 500) 
                            {
                                tmignore = millis();
                                
                                // Наступна пісня
                                if (enc2.isRight()) 
                                    {
                                        number++;
                                        if (number>count_mp3){number=1;}
                                        goto Track;
                                    }
                
                                // Попередня пісня
                                if (enc2.isLeft()) 
                                    {
                                        number--;
                                        if (number<1){number=count_mp3;}
                                        goto Track;
                                    }

                      
                                // Швидка перемотка на 10 треків у перед
                                if (enc2.isFastR()) 
                                    {
                                        number=number+10;
                                        if (number>count_mp3){number=1;}
                                        goto Track;
                                    }
                    
                                // Швидка перемотка на 10 треків назад
                                if (enc2.isFastL()) 
                                    {
                                        number=number-10;
                                        if (number<1){number=count_mp3;}
                                        goto Track;
                                    }
                            } 

Є проблема.
Програвач грає треки по порядку, інколи програвач зациклюється на одному треку, енкодером перемонтую на наступний і далі нормально грає по порядку, до наступного, рандомного, повтору проблеми.Може хто підкаже по вирішенні цієї проблемі?
Бібліотека DFRobotDFPlayerMini.h

#7 Re: Програмування Arduino » Датчик вібраціїї » 2022-01-08 17:39:08

Попробую ще з флагом змінної (правда поки не дуже з цим).
З'ясував, що датчик не особливо то регулює чуттєвість, або потрібно норм так приложитися, щоб спрацював, або трошки зачепи щоб була дія.
Ще думаю спробувати приєднати такий https://fastdrive.com.ua/62290-dvuhzonovyy_datchik_udara_analogovyy_convoy_fss-2.html, тут нормальне регулювання чутливості і є два виходи, зона попередження і тривоги. Правда не відомі параметри виходу.

#8 Re: Програмування Arduino » Датчик вібраціїї » 2022-01-08 16:53:51

Попробував:


val = digitalRead(2);
if (val != oldval)
{
  oldval = val;
  if (millis() - tmignore > 5000)
   {
     tmignore = millis();
     Serial.println("SMS");
    }
}

Пару разів (ударів) спрацьовує нормально, далі "пачка" в Serial SMS-ок.
Проблема схоже з тим, що датчик може зупинитися на любому рівні LOW/HIGH (якщо судити по індикації світлодіоду на датчику 801S).

P.S. Згодом...
Спочатку у даному коді дав, автоматом, визначення змінної tmignore як int, що було помилкою, замінивши на  uint32_t поки все норм працює.
Дякую Honey за допомогу.

#9 Re: Програмування Arduino » Датчик вібраціїї » 2022-01-08 16:09:31

Дякую, через годинку-півтори попробую, напишу результат.

#10 Програмування Arduino » Датчик вібраціїї » 2022-01-08 15:38:58

Partyzan
відповідей: 6

Датчик  удару/вібрації https://arduino.ua/prod3603-modyl-datchika-ydara-801s використовуючи код


if (digitalRead(2)!= digitalRead(2))
   {     
    Serial.println("Тест");
   }

дає декілька записів в монітор. Яким чином визначити лише одну реакцію на удар.
Замість Serial.println("Тест"); пишу рядок відправки SMS, але так як значень дії датчика декілька, то відповідно SMS-ок, приходить декілька.
Як зробити, щоб на удар пішла лише одна SMS і при першому проходженні  умови не приходила SMS, а лише тільки тоді коли відбулася дія по датчику?
P.S. на датчику встановлено максимальну чуттєвість.

#11 Re: Програмування Arduino » Робота енкодера » 2021-11-21 22:48:52

GyverEncoder.h
Зараз код має вигляд:

void loop()
{
  //enc2.tick();
  enc2.setTickMode(AUTO);
  if (enc2.isLeft()&&state=="Radio")
   {
    LCD.clear();LCD.setCursor(0, 0);LCD.print (k);
    k++;
    s="MP3";
   }

   if (enc2.isRight()&&state=="Radio")
    {
     LCD.clear();LCD.setCursor(0, 0);LCD.print (k);
     k--;
     s="MP3";
    }

   if (enc2.isLeft()&&state=="MP3")
   {
    LCD.clear();LCD.setCursor(0, 1);LCD.print (z);
    z++;
    s="Radio";
   }

   if (enc2.isRight()&&state=="MP3")
    {
     LCD.clear();LCD.setCursor(0, 1);LCD.print (z);
     z--;
     s="Radio";
    }

   if (enc2.isClick())
    {
     state=s;
     if (state=="Radio"){LCD.clear();LCD.setCursor(0, 0);LCD.print (k);}
     if (state=="MP3"){LCD.clear();LCD.setCursor(0, 1);LCD.print (z);}
    }
}

Перемикання працює якщо enc2.setTickMode(AUTO), але в цьому варіанті коли крутиш енкодер, то наявні пропуски, тобто на якийсь градус повернув і не завжди змінює число на екрані.
Якщо ставити enc2.tick(), то чітко змінюються дані на екрані, без пропусків. Але при натисканні на енкодер наявне перемикання як має бути і все, більше реакції на енкодер не має...


Доповнення. Таки запрацювало як потрібно. Потрібно було винести умову &&state== з перевірки події на енкодері в окрему умову IF, а вже в ній робити enc2.isRight()/enc2.isLeft().
Хоча мабуть є кращий спосіб...

#12 Програмування Arduino » Робота енкодера » 2021-11-21 20:34:51

Partyzan
відповідей: 2

Чи можлива коректна робота такого варіанту?


if (enc2.isClick())
{
  if (enc2.isLeft())
   {
    k++;
    LCD.setCursor(0, 0);LCD.print (k);
   }
}

Натискаючи на енкодер можна крутилкою змінювати значення.

Підвал форуму