12 Bit PWM

eine weitere Bastelseite ....

12 Bit PWM

30. Juli 2020 Arduino Hardware 0

 

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); 
}