LINUX.ORG.RU

История изменений

Исправление Novator, (текущая версия) :

Я не понимаю как мне сделать сам подсчёт количества «щелчков» в коде

У тебя же есть код на Си:

    if(!digitalRead(pinDIAL)){                          // Если разрешено чтение импульсов (на синем проводе логический «0»), то ...
        delay(20);                                      // Подавляем дребезг шунтирующей контактной группы.
        cntPULSE=0;                                     // Сбрасываем счётчик.
        while(!digitalRead(pinDIAL)){                   // Входим в цикл, пока на синем проводе не появится логическая «1» ...
            if(digitalRead(pinPULSE)){                  // Если поступил импульс (на жёлтом проводе логическая «1»), то ...
//              Фронт импульса:                         //
                delay(5);                               // Подавляем дребезг импульсной контактной группы.
                while(digitalRead(pinPULSE)){delay(5);} // Ждём завершения импульса.
//              Спад импульса:                          //
                delay(5);                               // Подавляем дребезг импульсной контактной группы.
                cntPULSE++;                             // Увеличиваем счётчик полученных импульсов.
            }                                           //
        }                                               // Выход из цикла while сигнализирует о появлении логической «1» на синем проводе.
        delay(20);                                      // Подавляем дребезг шунтирующей контактной группы.
        if(cntPULSE){                                   // Если был зафиксирован хотя бы 1 импульс, то ...
            if(cntPULSE>=10){cntPULSE=0;}               // Если поступило 10 импульсов, значит набрана цифра 0.
            Serial.println(cntPULSE);                   // Выводим набранную цифру (количество поступивших импульсов).
        }                                               //
    }                                                   //
}             

Перепиши на питоне:

while True:
  if not GPIO.input(dial):
    sleep(0.02)
    cntPULSE=0
    while not GPIO.input(dial):
      if GPIO.input(pulse):
        sleep(0.005)
        while GPIO.input(pulse):
          sleep(0.005)
        sleep(0.005)
        cntPULSE += 1
      sleep(0.005)
    if (cntPULSE>0) and (cntPULSE<10):
      print('Считано импульсов: '+str(cntPULSE))
  else:
    sleep(0.02)

Попробуй.

Исходная версия Novator, :

Я не понимаю как мне сделать сам подсчёт количества «щелчков» в коде

У тебя же есть код на Си:

    if(!digitalRead(pinDIAL)){                          // Если разрешено чтение импульсов (на синем проводе логический «0»), то ...
        delay(20);                                      // Подавляем дребезг шунтирующей контактной группы.
        cntPULSE=0;                                     // Сбрасываем счётчик.
        while(!digitalRead(pinDIAL)){                   // Входим в цикл, пока на синем проводе не появится логическая «1» ...
            if(digitalRead(pinPULSE)){                  // Если поступил импульс (на жёлтом проводе логическая «1»), то ...
//              Фронт импульса:                         //
                delay(5);                               // Подавляем дребезг импульсной контактной группы.
                while(digitalRead(pinPULSE)){delay(5);} // Ждём завершения импульса.
//              Спад импульса:                          //
                delay(5);                               // Подавляем дребезг импульсной контактной группы.
                cntPULSE++;                             // Увеличиваем счётчик полученных импульсов.
            }                                           //
        }                                               // Выход из цикла while сигнализирует о появлении логической «1» на синем проводе.
        delay(20);                                      // Подавляем дребезг шунтирующей контактной группы.
        if(cntPULSE){                                   // Если был зафиксирован хотя бы 1 импульс, то ...
            if(cntPULSE>=10){cntPULSE=0;}               // Если поступило 10 импульсов, значит набрана цифра 0.
            Serial.println(cntPULSE);                   // Выводим набранную цифру (количество поступивших импульсов).
        }                                               //
    }                                                   //
}             

Перепиши на питоне:

while True:
  while not GPIO.input(dial):
    sleep(0.02)
    cntPULSE=0
    while not GPIO.input(dial):
      if GPIO.input(pulse):
        sleep(0.005)
        while GPIO.input(pulse):
          sleep(0.005)
        sleep(0.005)
        cntPULSE += 1
    sleep(0.02)
    if (cntPULSE>0) and (cntPULSE<10):
      print('Считано импульсов: '+str(cntPULSE))

Попробуй.