Почему щелкает зуммер моего Arduino Nano?

EDIT: Мне очень жаль, но щелчок исходил не от Arduino, а от пьезозуммы! Я был не прав, и мне так жаль, что я ввел вас в заблуждение!

Недавно я купил Arduino Nano, чтобы уменьшить свою компоновку с помощью Arduino Uno, поэтому я спаял все вместе, а когда подключил Nano, то дополнительно убедился, что ничто не закорачивает друг друга. Но зуммер, прикрепленный к нему, продолжал издавать этот щелкающий звук. Кто-нибудь знает почему? Действительно ли у меня короткое замыкание?

Вот код:


#define LED 1
#define twoLED 2
#define threeLED 4
#define fourLED 5
#define fiveLED 6
#define sixLED 7
#define sevenLED 8
#define eightLED 9
#define nineLED 10
#define tenLED 11




int state = 0;
int old = 0;
int buttonPoll = 0;

void setup() {
  pinMode (3,INPUT);
  pinMode (11,OUTPUT);
  pinMode(LED, OUTPUT);
  pinMode(twoLED, OUTPUT);
  pinMode(threeLED, OUTPUT);
  pinMode(fourLED, OUTPUT);
  pinMode(fiveLED, OUTPUT);
  pinMode(sixLED, OUTPUT);
  pinMode(sevenLED, OUTPUT);
  pinMode(eightLED, OUTPUT);
  pinMode(nineLED, OUTPUT);
  pinMode(tenLED, OUTPUT);
  

  digitalWrite(LED, LOW);
  digitalWrite(twoLED,LOW);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
  
}

void loop() {

while (state == old)
{
  buttonPoll = digitalRead (3);
  if (buttonPoll ==1)
  {
    delay (50);
    buttonPoll = digitalRead (3);
    if (buttonPoll == 0)
    {
      state = old + 1;
    }
  }
  else
  {
    delay(100);   
  }



  switch (state) 
  {
    case 1:
  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,LOW);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;

    case 2:
      digitalWrite(LED, HIGH);
  digitalWrite(twoLED,LOW);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;
    
    case 3:
  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;

case 4:
      digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;
    
    case 5:
  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;

case 6:

  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
    old = state;
    break;
    
    case 7:
  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

case 8:
  digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
    
  case 9:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

case 10:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
    
  case 11:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

    case 12:
        digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

  case 13:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
case 14:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
    
  case 15:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, HIGH);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

case 16:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, HIGH);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
    
  case 17:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, HIGH);
  digitalWrite(nineLED, HIGH);
  digitalWrite(tenLED, LOW);
   old = state;
    break;

case 18:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, HIGH);
  digitalWrite(nineLED, HIGH);
  digitalWrite(tenLED, LOW);
   old = state;
    break;
    
  case 19:
    digitalWrite(LED, HIGH);
  digitalWrite(twoLED,HIGH);
  digitalWrite(threeLED,HIGH);
  digitalWrite(fourLED, HIGH);
  digitalWrite(fiveLED, HIGH);
  digitalWrite(sixLED, HIGH);
  digitalWrite(sevenLED, HIGH);
  digitalWrite(eightLED, HIGH);
  digitalWrite(nineLED, HIGH);
  digitalWrite(tenLED, HIGH);
   


      tone (11,493.88);
      delay(150);

      tone(11, 523.25);
      delay(150);
      
      tone(11,493.88);
      delay(150);

      tone(11,392.00);
      delay(150);

      tone(11,329.63);
      delay(150);

      tone(11, 261.63);
      delay(150);

      tone(11, 246.94);
      delay(150);
      
      tone (11,196.00);
      delay(150);
      
      tone(11, 246.94);
      delay(150);
      
      tone(11, 261.63);
      delay(150);
      
      tone(11,392.00);
      delay(150);
      
      tone(11,493.88);
      delay(150);
      
      tone(11, 523.25);
      delay(150);
      
      tone (11,493.88);
      delay(150);
     
      tone(11,493.88);
      delay(150);
      
      tone(11,392.00);
      delay(150);
      
      tone(11, 329.63);
      delay(150);
      
noTone(11);



old = state;
state = 0;
old = 0;
        
    break;

    default:
  digitalWrite(LED, LOW);
  digitalWrite(twoLED,LOW);
  digitalWrite(threeLED,LOW);
  digitalWrite(fourLED, LOW);
  digitalWrite(fiveLED, LOW);
  digitalWrite(sixLED, LOW);
  digitalWrite(sevenLED, LOW);
  digitalWrite(eightLED, LOW);
  digitalWrite(nineLED, LOW);
  digitalWrite(tenLED, LOW);
  
    old = 0;

    break;
}



}

  }

Вот видео щелчка: https://drive.google.com/file/d/1TprL56p2YyJ3j8cq43U2LYzaWofZpJM7/view?usp=sharing

, 👍1

Обсуждение

Э-э, я хочу это увидеть. =) Может быть, вы тоже это услышите., @timemage

Не очень хорошие керамические конденсаторы, как известно, поют/щелкают... Работает или не работает NANO на данном этапе?, @Peter Willard

Как я мог показать его тебе?, @Éemia

Ну, я попробовал, и, похоже, ничего не вышло, @Éemia

вы уверены, что Нано щелкает? ... может быть, источник питания издает шум, @jsotola

Я почти уверен, что это Arduino. Я подключил его к своему компьютеру, и мой компьютер никогда раньше не издавал такого звука., @Éemia

Какова природа щелчка? Можете ли вы описать это как звук, который может быть вам знаком? Щелкает ли он с постоянной постоянной скоростью? Только один раз после включения питания? Поскольку вы припаяли его сами, я бы, по крайней мере, проверил пайку под лупой и проверил наличие паяных мостиков (коротких замыканий). Вы можете сделать снимок с близкого расстояния с помощью телефона, убедившись, что он четкий, и опубликовать его., @lurker

Пожалуйста, опубликуйте четкую картину. Очень трудно понять, есть ли проблема в противном случае., @StarCat

Здесь я загрузил видео щелчка: https://drive.google.com/file/d/1TprL56p2YyJ3j8cq43U2LYzaWofZpJM7/view?usp=sharing, @Éemia

@Éemia, для этого нужно получить общедоступную ссылку., @timemage

Упс, вот тут ты прав, я его обновил., @Éemia


1 ответ


1

Более простой пьезос щелкает, когда напряжение подается, и снова, когда оно удаляется. Чтобы заставить его гудеть, ему нужен пульс: много щелчков делает гудение. Есть пьезо, которые имеют эту встроенную функцию, но я предполагаю, что у вас ее нет. Это на самом деле хорошая вещь в маскировке: она позволяет создавать тоны, создавая импульсные последовательности на разных частотах. Самый простой способ сделать это-подключить его к одному из ШИМ-выводов (5, 6, 9, 10 или 11) и использовать библиотечную функцию tone () (посмотрите, если вам нужно). Конечно, вы можете сделать это "вручную" тоже на любом выходном выводе, просто переключая его ВВЕРХ и ВНИЗ на скорости, которые вы выбираете, но это в значительной степени свяжет ваш процессор, по крайней мере, для более высоких частот.

Обновление:

Просто почему он не щелкал, когда я подключил его к Arduino Uno?

Я не могу сказать, не видя двух скетчей, но в вашем видео это звучит так, как будто он включается или выключается или пульсирует один раз в секунду.

Пожалуйста, добавьте ваш код (оба, если они разные) к вашему вопросу. Схема(ы) подключения пьезоэлемента к платам Arduino также поможет.

,

Большое спасибо за вашу информацию! Просто почему он не щелкал, когда я подключал его к Arduino Uno?, @Éemia

Хорошо, я загрузил код, но то, как я подключил пьезозуммер, - это просто то, что я подключил положительную сторону к цифровому контакту (D13), а отрицательную сторону к земле, точно так же, как вы должны это делать в соответствии с исследованиями., @Éemia

Вы описали подключение его к контакту 13, но ваши вызовы функции "тон ()" адресуются к контакту 11. Это ошибка подключения или опечатка? Вывод 11 действительно является ШИМ-выводом, и подключение пьезоэлемента к нему должно работать правильно. Если он действительно подключен к контакту 13, я не вижу причины, по которой он должен щелкать при запуске вашей программы, но он вполне может щелкать во время загрузки, если ваш загрузчик мигает встроенным светодиодным выводом 13., @JRobert

Ах да, я использовал контакт 11, когда подключал все к Arduino Uno, но теперь я перенес все на Arduino Nano и не изменял код. Тем не менее, я даже не могу загрузить код на свой Arduino Nano. Он все время говорит, что есть ошибка. Спасибо за ваш комментарий!, @Éemia

Пожалуйста, добавьте сообщение об ошибке в свой вопрос и убедитесь, что оба поля "Показать подробный вывод" в настройках IDE отмечены галочками при запуске компиляции и загрузке., @JRobert