Hallo zusammen,
ich wende mich mit einer Frage an Euch weil ich in meinem tun etwas auf dem Schlauch stehe und im Moment einfach nicht mehr weiter weis.
Ich habe einen AD8318 an A0 angeschlossen mit dem ich Leistung in kleinen Bereichen messen kann. Hier erhalte ich eine Voltzahl bis Max 2 Volt.
Mein Bargraph funktioniert zwar, hat aber:
a) Keine Begrenzung auf 2 Volt
b) durch den fillRect auf BLACK immer wieder mal ein flickern
Vieleicht könnte mir ja jemand auf die Sprünge helfen wie ich das evtl. besser verfolständigen könnte. Wie das ganze am TFT in kompletten Umfang aussieht poste ich am Ende in einem Bildchen.
Hier der Sketch, abgespeckt auf den Bargrah
#include <SPI.h>
#include <ILI9341_due_config.h>
#include <ILI9341_due.h>
// TFT LCD Treiber und Pins
// Anschluss per Hardware SPI .. Pin #11, #12, #13 .. UNO, NANO
#define ILI9341_DC 9
#define ILI9341_CS 10
ILI9341_due tft = ILI9341_due(ILI9341_CS, ILI9341_DC);
int volt_in;
int Lastvolt_in = 0;
float A0_volt;
byte iii;
void setup(){
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
analogReference (DEFAULT) ;
skala();
}
void loop()
{
volt_vout();
bargraph();
}
void volt_vout()
{
A0_volt = analogRead(A0);
for(iii=0;iii<=8; iii++)
A0_volt = A0_volt + analogRead(A0);
A0_volt = A0_volt/2048 ;
}
void bargraph()
{
volt_in = (76-(A0_volt*45));
tft.fillRect(10, 102, volt_in ,7, ILI9341_ORANGE);
if (volt_in < Lastvolt_in)
{
tft.fillRect(10, 102, 300 ,7, ILI9341_BLACK);
}
Lastvolt_in = volt_in;
}
void skala()
{
// Skala und Power BarGraph
tft.drawFastHLine(10, 98, 301, ILI9341_WHITE);
tft.drawFastVLine(10, 92, 6, ILI9341_WHITE);
tft.drawFastVLine(22, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(32, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(42, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(52, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(62, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(72, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(85, 92, 6,ILI9341_WHITE);
tft.drawFastVLine(98, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(108, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(118, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(128, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(138, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(148, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(160, 92, 6, ILI9341_WHITE);
tft.drawFastVLine(172, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(182, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(192, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(202, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(212, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(222, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(235, 92, 6, ILI9341_WHITE);
tft.drawFastVLine(248, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(258, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(268, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(278, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(288, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(298, 95, 3, ILI9341_WHITE);
tft.drawFastVLine(310, 92, 6, ILI9341_WHITE);
}
Achja, der ein oder andere mag sich fragen was das "volt_in = (76-(A0_volt*45));" soll. Der AD8318 gibt weniger Volt bei mehr Leistung aus. Darum dreh ich das so. Sicher gbt es da auch bessere Lösungen.
Hier noch das Bildchen des Probeaufbaues.