02-01-2022, 13:55
Witam serdecznie mam problem z kodem a raczej z poprawnym jego napisaniem i działaniem.
Chciałbym potencjometrem regulować jasność świecenia się diod.
Poniżej kod i filmik z obecnego działania.
Docelowa chce zrobić kilka rodzajów ruchów Pan/Tilt oraz kolorów i jasność świecenia.
https://www.youtube.com/watch?v=cKjOUSEIbS0
Chciałbym potencjometrem regulować jasność świecenia się diod.
Poniżej kod i filmik z obecnego działania.
Docelowa chce zrobić kilka rodzajów ruchów Pan/Tilt oraz kolorów i jasność świecenia.
Kod:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define analogPin 1
#define PIN 6
#define NUMPIXELS 8
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#include <Timers.h>
#include <Servo.h>
Servo servoU;
Servo servoT;
Timers <8> akcja;
int val = analogRead(A1);
int brightness;
float i;
double x;
double y;
void setup()
{
pinMode(analogPin, INPUT);
Serial.begin(9600);
pixels.begin();
servoU.attach(10);
servoT.attach(9);
akcja.attach(0, 250, zadanie1); // Wątek 1: wcześniej zdefiniowana funkcja o nazwie zadanie1, wywoływana co ok 1 sek.
akcja.attach(1, 30, zadanie2); // anlogicznie dla zadanie2 , ale tutaj na razie nie robimy nic, bo interwał =0;.
akcja.attach(2, 50, zadanie3); // zadanie3 wykonuje się co 50 ms. (np. pomiar temperatury)
//akcja.attach(3, 200, zadanie4); // co 200 ms sprawdzamy np stan przycisku
//akcja.attach(4, 189, zadanie5); // a co 189 ms sprawdzamy stan czujnika odległości
// akcja.attach(5, 1211, zadanie6); // a co 1211 ms wysyłamy jakis komunikat na Seriala
}
void zadanie1() {
for (i = 0; i < 360; i += 0.02) {
x = 60 * sin(i) + 80;
y = 60 * cos(i) + 120;
servoU.write(x);
servoT.write(y);
delay(10);
}
}
void zadanie2() {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(200, 0, 255));
pixels.setPixelColor(1, pixels.Color(200, 0, 255));
pixels.setPixelColor(2, pixels.Color(200, 0, 255));
pixels.setPixelColor(3, pixels.Color(200, 0, 255));
pixels.setPixelColor(4, pixels.Color(200, 0, 255));
pixels.setPixelColor(5, pixels.Color(200, 0, 255));
pixels.setPixelColor(6, pixels.Color(200, 0, 255));
pixels.setPixelColor(7, pixels.Color(200, 0, 255));
pixels.setPixelColor(8, pixels.Color(200, 0, 255));
pixels.show();
}
void zadanie3() {
int val = analogRead(analogPin);
val = map(brightness, 0, 1023, 0, 255);
Serial.println(brightness);
pixels.setBrightness(brightness);
}
void zadanie4() {
}
void zadanie5() {
}
void zadanie6() {
}
void loop()
{
akcja.process();
akcja.updateInterval(0, 100); // odpalamy akcje dla zadania 2, co 300 ms.
akcja.updateInterval(1, 150); // odpalamy akcje dla zadania 2, co 300 ms.
akcja.updateInterval(2, 200); // odpalamy akcje dla zadania 2, co 300 ms.
}