Paso 1: Cómo código
La parte más difícil está trabajando como programa 1 contador/temporizador para usar Pin 5 como un contador de entrada en lugar del más habitual utiliza como una entrada digital o analógica o salida. Esto requiere un escrutinio cercano de la hoja de datos, pero por suerte para usted, he hecho todo eso.
En el contexto global del boceto (es decir, antes de setup()) tendrá las siguientes líneas de código:
int pixels; #define MAXPIXELS 60 #define PIN 8 Adafruit_NeoPixel strip = Adafruit_NeoPixel(MAXPIXELS, PIN, NEO_GRB + NEO_KHZ800);
En un esquema existente ya tendrás las dos últimas líneas, o algo equivalente. Si está usando un tipo diferente de NeoPixels o un alfiler diferente, modificar estas líneas para que coincida con su versión.
En un punto conveniente en setup(), agregue el código siguiente:
#define COM1A 0 #define COM1B 0 #define WGM1 4 // CTC mode #define FOC1 0 #define CS1 7 // Ext clock on rising edge TCCR1A = (COM1A << 6) | (COM1B << 4) | (WGM1 & 3); TCCR1B = (FOC1 << 6) | ((WGM1 & 0xC) << 1) | CS1; strip.begin(); TCNT1 = 0; strip.show(); pixels = PIXELS - (TCNT1 + 12)/24; // Serial.begin(38400); // Serial.print("Count = "); Serial.print(TCNT1); // Serial.print(" Pixels = "); Serial.println(pixels);
Puede descomentar las líneas comentadas para propósitos de depuración si lo desea, para ver que se cuentan los bits ya que fuera de duda.
En el resto de su bosquejo, utilizar la variable pixeles dondequiera que usted necesite el tamaño del anillo, o donde el código utiliza strip.numPixels().