Witajcie!
Od razu nadmienię, iż kwestii programowania jestem bardzo początkującą osobą i będę bardzo wdzięczny za rady i wypunktowanie moich błędów.
Projekt, nad którym pracuje to przepływomierz (YF-S201), który w zależności od obrotów będzie regulował wizualny efekt progress baru na taśmie WS2812B. Płytka to arduino Nano.
Kod, który znalazłem w internecie służący do odczytu z przepływomierza (z dodaną biblioteką adafruita i resztą) :
Kod odpowiedzialny za dostosowanie efektu diod do natężenia przepływu:
Rezultat jest taki, że port szeregowy wysyła dane z przepływomierza, natomiast diody nie emitują światła.
Z góry dziękuję za pomoc!
Od razu nadmienię, iż kwestii programowania jestem bardzo początkującą osobą i będę bardzo wdzięczny za rady i wypunktowanie moich błędów.
Projekt, nad którym pracuje to przepływomierz (YF-S201), który w zależności od obrotów będzie regulował wizualny efekt progress baru na taśmie WS2812B. Płytka to arduino Nano.
Kod, który znalazłem w internecie służący do odczytu z przepływomierza (z dodaną biblioteką adafruita i resztą) :
Kod:
#include <Adafruit_NeoPixel.h>
#define PIN 6 // WS2812 chip - Data In
#define Pixel_Number 8
Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixel_Number, PIN, NEO_GRB + NEO_KHZ800);
const int watermeterPin = 2;
volatile int pulse_frequency;
unsigned int literperhour;
unsigned long currentTime, loopTime;
byte sensorInterrupt = 0;
void setup()
{
pinMode(watermeterPin, INPUT);
Serial.begin(9600);
strip.begin();
attachInterrupt(sensorInterrupt, getFlow, FALLING);
currentTime = millis();
loopTime = currentTime;
}
void loop ()
{
currentTime = millis();
if(currentTime >= (loopTime + 100))
{
loopTime = currentTime;
literperhour = (pulse_frequency * 60 / 7.5);
pulse_frequency = 0;
Serial.print(literperhour, DEC);
Serial.println(" Liter/hour");
jazda();
}
}
void getFlow ()
{
pulse_frequency++;
}
Kod odpowiedzialny za dostosowanie efektu diod do natężenia przepływu:
Kod:
void jazda ()
{
if(literperhour < 20 )
{
strip.setPixelColor(0, strip.Color(0, 127, 0));
for(int i=1;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
}
else if(literperhour > 20 && literperhour < 40 )
{
strip.setPixelColor(0, strip.Color(0, 127, 0));
strip.setPixelColor(1, strip.Color(0, 127, 0));
for(int i=2;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
}
else if(literperhour > 40 && literperhour < 60 )
{
for(int i=0;i<2;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=3;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
}
else if(literperhour > 60 && literperhour < 80 )
{
for(int i=0;i<3;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=4;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
}
else if(literperhour > 80 && literperhour < 100 )
{
for(int i=0;i<4;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=5;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.show();
}
else if(literperhour > 100 && literperhour < 120 )
{
for(int i=0;i<5;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=6;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.show();
}
else if(literperhour > 120 && literperhour < 140 )
{
for(int i=0;i<6;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=7;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.setPixelColor(5, strip.Color(255, 255, 0));
strip.show();
}
else if(literperhour > 140 && literperhour < 160 )
{
for(int i=0;i<7;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=8;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.setPixelColor(5, strip.Color(255, 255, 0));
strip.setPixelColor(6, strip.Color(255, 0, 0));
strip.show();
}
else if(literperhour > 160 )
{
for(int i=0;i<8;i++)
strip.setPixelColor(i, strip.Color(0, 127, 0));
for(int i=8;i<Pixel_Number;i++)
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setPixelColor(4, strip.Color(255, 255, 0));
strip.setPixelColor(5, strip.Color(255, 255, 0));
strip.setPixelColor(6, strip.Color(255, 0, 0));
strip.setPixelColor(7, strip.Color(255, 0, 0));
strip.show();
}}
Rezultat jest taki, że port szeregowy wysyła dane z przepływomierza, natomiast diody nie emitują światła.
Z góry dziękuję za pomoc!