Beat 1 LED light всегда горит - должен выключиться

/**************************************/
const int lowestPin = 1;//the lowest one attach to
const int speaker = 13;
int ts = 4;//how many beats you want
int count = 1;
const int keyPin = 11;
const int keyPinR = 10;
int buttonState = LOW;
int buttonState2 = LOW;
int bpm = 120;
int rthm = 1;
/**************************************/
void setup()
{
  Serial.begin(9600);
   for(int thisPin = 1;thisPin <= ts;thisPin++)
   {
 pinMode(thisPin,OUTPUT); //initialize thisPin as an output
 pinMode(8, INPUT); 

 pinMode(keyPin, INPUT);
 pinMode(keyPinR, INPUT);
 digitalWrite(keyPin, HIGH);
 digitalWrite(keyPinR, HIGH); 
 }

}

/****************************************/
void loop()
{
 buttonState = digitalRead(keyPin);
 buttonState2 = digitalRead(keyPinR);
 if(buttonState==LOW){
 ts++; 
  if(ts==6)
   {
    ts = 2;
   }
  }
 if(buttonState2==LOW){
  rthm++;
    Serial.println(rthm);
  if(rthm==5)
  rthm = 1;

  }
  for(int thisPin = 1;thisPin <= ts;thisPin++)
  { 

  for(int r = 1; r<=rthm; r++){
   bpm = pulseIn(6, HIGH);
    digitalWrite(thisPin,HIGH);

    pinMode(13,OUTPUT); 

    if(count == 1&&r==1)
    tone(13,1500,40);
    else if(r==1)
    tone(13,1000,40);
    else
    tone(13,500,40);
    delay((bpm-52)/rthm);

    digitalWrite(thisPin,LOW);
    pinMode(13,INPUT);

   }
    count++;
    if(count >ts)
    count = 1;
    }  

   }

Это проект метронома. Каждый светодиод представляет собой бит. Однако светодиод для beat 1 всегда горит. Он должен выключаться, когда находится на другом ритме, отличном от одного. Что-нибудь не так с кодом?

, 👍0

Обсуждение

Не могли бы вы уточнить, о каких контактах идет речь? У вас есть много контактов и несколько цифр, разбросанных по всему коду. Какой контакт всегда включен? Номер контакта., @Nick Gammon

Ваш код очень трудно читать, вероятно, из-за вставки, но почему вы устанавливаете контакты в качестве входных данных, а затем пишете на них. Также, почему вы устанавливаете режим pins 4 раза?, @Code Gorilla


1 ответ


1

Вы используете PIN1 в качестве выходного пина и записываете данные в последовательный интерфейс. Последовательный интерфейс использует контакты 1 и 0. Измените lowestPin на 2, а ts на 5, и это сработает.

,