12 Bit PWM
In dem Beispiel soll zusätzlich zum NeoPixel- Ring und dem Poti ein 12Bit A/D- Wandler angesteuert werden.Die Position des Servos ändert sich, wenn man an dem Poti dreht.
#include <Adafruit_NeoPixel.h> #include <Wire.h> #include <Adafruit_PWMServoDriver.h> Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 6 // NeoPixel Input Pin #define NUMPIXELS 16 // Piexelanzahl des Ringes Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int sensorPin = A0; // pin potentiometer int sensorValue = 0; // variable to store the value coming from the sensor int lamps =0; uint16_t servoFreq=200; void setup() { pixels.begin(); // startet NeoPixel library pwm.begin(); pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates delay(10); } void loop() { sensorValue = analogRead(sensorPin); // liest den Analog Wert ein lamps = map(sensorValue, 0, 1023, 0, 16); servoFreq = map(sensorValue, 0, 1023, 150, 500); for (int i=0;i<lamps;i++){ pixels.setPixelColor(i, pixels.Color(0,0,150)); pixels.show(); } for (int i=lamps;i<16;i++){ //löscht die anzeige pixels.setPixelColor(i, pixels.Color(0,0,0)); pixels.show(); } pwm.setPWM(0, 0, servoFreq); delay(50); }