Счетчик на моем монетоприемнике поднимается без ввода монеты, что посоветуете?

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

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

мы используем базовый код, который отлично работал до тех пор, пока у нас не возникла проблема с тем, что значение счетчика больше не остается равным 0:

const int coinpin = 2;
const int ledpin = 3;
const int targetcents = 100;

// Переменные
volatile int cents = 0;
int credits = 0;

// Настраивать
void setup() {

  Serial.begin(9600);
  attachInterrupt(digitalPinToInterrupt(coinpin), coinInterrupt, RISING);
  pinMode(ledpin, OUTPUT);

}

// Основной цикл
void loop() {

  // Если мы достигли целевого количества монет, увеличиваем наши кредиты и сбрасываем счетчик центов
  if (cents >= targetcents) {
    credits = credits + 1;
    cents = cents - targetcents;
  }

  // Если мы не достигли цели, продолжаем ждать...
  else {
  }

  // Зона отладки
  Serial.print(cents);
  Serial.print(" cents toward current credit and ");
  Serial.print(credits);
  Serial.println(" credit(s) earned so far.");
  delay(1000);

  // Выключаем светодиод
  digitalWrite(ledpin, LOW);

  // Теперь напишите здесь свой классный код, который запускает событие, когда у игрока есть кредиты!
  if (credits > 0) {
    // Играть музыку?
    // Раскрутить двигатель?
    // Начать игру?
    // Тебе решать!
  }

}

// Прерывать
void coinInterrupt(){

  // Каждый раз, когда монетоприемник отправляет импульс, прерываем основной цикл, чтобы добавить 1 цент и включать светодиод
  cents = cents + 1;
  digitalWrite(ledpin, HIGH);

}

любой совет, что может быть причиной этой проблемы?

ура

, 👍1

Обсуждение

Похоже на плавающий ввод. Проверьте подтягивающий/подтягивающий резистор на монетке., @Majenko

В дополнение к тому, что сказал @Majenko, у меня есть следующая идея: поскольку датчик питается от 12 VI, думаю, вы питаете его извне. Имеют ли внешнее питание и Arduino общее заземление? То есть вы подключили GND внешнего источника питания и контакт GND Arduino. Возможно, вы сделали это при первой настройке, но забыли об этом после перемонтажа., @Peter Paul Kiefer

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

«... он работал нормально, пока мы не попытались привести в порядок нашу проводку и распутать ее». Чего ждать? Ваша аппаратно-программная система работала нормально, пока вы не внесли изменения в оборудование (пытаясь привести в порядок проводку), и теперь она не работает, поэтому вы решили, что это должно быть программное обеспечение? Почему это имеет смысл? Если он работал нормально, пока вы не поменяли аппаратное обеспечение, не следует ли вам сосредоточиться на аппаратных проблемах? Вы почти наверняка перепутали проводку. Сосредоточьтесь на этом., @Duncan C


1 ответ


2

Меня это тоже смущает. Совет, который я увидел здесь, заключался в том, чтобы соединить провод COIN также с электрическим проводом "R" 10K и подключите ко второму отверстию слева в Arduino "IOREF" теперь это работает.

,