(27.06.2020, 10:49)akguzzi schrieb: Ich hab hier eine "einäugige" A77 stehen... da werde ich mir gar keine Mühe geben ein zweites VU-Meter zu bekommen sondern das eine vorhandene dann an einen Leidenden abgeben
Hi Andreas,
Dir sollte aber klar sein, dass eine Doppelsiplay-Version erst kommt, wenn die A700 Version fertig ist .
Das kann durchaus eine Weile dauern.
LG
Bruno
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• dedefr, akguzzi
Beiträge: 1.587
Themen: 114
Thanks Received: 3.314 in 828 posts
Thanks Given: 1.753
Registriert seit: Feb 2015
Bewertung:
20
Das ist eine sehr verlockende Aussicht... bis dahin mach ich die A77 mit einem A700-VU zum absoluten Unikat
schönen Tag
Andreas
2 Mitglieder sagen Danke an akguzzi für diesen Beitrag:2 Mitglieder sagen Danke an akguzzi für diesen Beitrag
• dedefr, stephan1892
Hab das Sketch durchgesehen und mir ist folgendes aufgefallen:
Die Over-LEDs werden nicht (sofort) gelöscht wenn der Zeiger in den normalen Bereich zurück geht.
Wenn man 0,0 als Wert für Links und Rechts eingibt, wird keine Nadel gezeichnet. Init fehlt.
Die Granulierung der Anzeige geht nur bis 100 obwohl vertikal 220px zur Verfügung stehen.
Das und noch weitere und kleinere Verschlimmbesserungen sind unter
https://www.dropbox.com/s/efm2aiyn70xfrp...0.rar?dl=0
abrufbar.
Zudem ist mir aufgefallen, dass die Zeigerspitze einen kaum sichtbaren Pixelbogen zeichnet. Fällt nur auf, wenn man mit der Lupe draufglotzt.
19:00 Hab noch einen Fehler ausgebessert und eine neue Version hochgeladen.
20:00 Nadelbewegung wurde verbessert und feiner granuliert. Das Zittern der Nadel wurde reduziert.
(27.06.2020, 17:08)gogosch schrieb: Zudem ist mir aufgefallen, dass die Zeigerspitze einen kaum sichtbaren Pixelbogen zeichnet.
Moin,
herzlichen Dank für die Korrekturen .
Der Pixelbogen kommt daher, weil Du nun den Zeiger mit 3px zeichnest, da passt das Clipping nicht mehr genau und müsste angepasst werden.
LG
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• , sensor
(27.06.2020, 17:08)gogosch schrieb: Die Granulierung der Anzeige geht nur bis 100 obwohl vertikal 220px zur Verfügung stehen.
Mist, durch die jetzt feinere Granulierung wurde die Zeit für einen Loop um ca. 100% verlangsamt (egal ob nur eine Linie für den Zeiger oder drei).
Über 500ms, da müssen wir uns nen Kopp machen, das ist zu langsam .
LG
Edit: ich hatte die Peak-LEDs auskommentiert um die Clippingrechtecke zeichnen zu lassen und zu sehen, wenn die LEDs an sind, kommen wir über 640ms - Sche**e
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• sensor
Vorher hatten wir nur 66 Einzelwerte in der Loop Jetzt in etwa 220. Das passt eh! Es geht ja nur darum, einen einzelnen Wert möglichst schnell abzubilden. Mach Dir keinen Kopp! Für mich ist das voll OK. Die Loop ging bis 100. Dabei wurde ein Drittel der Werte nicht neu gezeichnet.
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• , sensor
(27.06.2020, 20:02)gogosch schrieb: Mach Dir keinen Kopp! Für mich ist das voll OK.
Ok, keinen Kopp - check!
Hast Recht, muss man dann im richtigen Betrieb sehen.
So ein mechanischer Zeiger hat ja nun mal auch eine Trägheitsverzögerung.
Oder die Zeiger der A700 sind besonders flink, dehalb brechen sie immer ab .
LG
Edit: mir ist noch was zu der Peak-LED eingefallen. Vielleicht können wir ja mit einen Flag arbeiten!? Sozusagen, wenn die LED an war und der Wert unter dem Peakwert liegt, soll er weiß zeichnen und das Flag setzen und wenn der übermittelte Wert schon vorher unter dem Peakwert iat, dann erst garnicht zeichnen, da weiß ja weiß ist. Wie Ottos Ostfriesenflagge .
EditEdit: Ich hatte heute schon vom Hans-Volker die 4BPP Bilder bekommen, die werde ich demnächst mal ins passende Format bringen, die Farbtabelle anlegen und die Blitzmethode der Lib drauf loslassen - sollte auch Punkte bringen.
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• , sensor
Ja, die Peak-LED etwa genauso handhaben wie den Zeiger: Werte innerhalb der Range (0-174) und (175-220) werden für Screen Updates nicht berücksichtigt.
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• sensor
Huhu,
mir ist noch aufgefallen, dass du zwar 3 Linien für die Nadel zeichnest, aber die Nadel trotzdem dünn ist.
War das so gewollt?
Hab mal schnell die Koordinaten, min/max und das ClippingRect für die rechte Seite korrigiert.
Nadel 3px und keine Schlieren, Rect passt.
Mal probieren?:
Code: /**************************************************************************/
/*!
@brief Paint the right side
*/
/**************************************************************************/
void drawNeedleRight(uint8_t percent) {
if (percent != pastRight) {
pastRight = percent;
double scale = map(220 - percent, 0, 220, 5700, 12300);
double arc = scale / 100 * DEG2RAD;
int16_t x1 = 355 - 193 * sin(arc);
int16_t y1 = 160 - 193 * cos(arc);
int16_t yEdge = 160 - 115 * cos(arc);
int16_t right_min_x = rightNeedleRectMinX;
int16_t right_min_y = rightNeedleRectMinY;
int16_t right_max_x = rightNeedleRectMaxX;
int16_t right_max_y = rightNeedleRectMaxY;
rightNeedleRectMinX = min(240, x1);
rightNeedleRectMinY = min(yEdge -1, y1 - 1);
rightNeedleRectMaxX = max(240, x1);
rightNeedleRectMaxY = max(yEdge + 1, y1 + 1);
right_min_x = min(right_min_x, rightNeedleRectMinX);
right_min_y = min(right_min_y, rightNeedleRectMinY);
right_max_x = max(right_max_x, rightNeedleRectMaxX);
right_max_y = max(right_max_y, rightNeedleRectMaxY);
// Background
tft.setClipRect(144, 45, 96, 224);
tft.writeRect(144, 45, 96, 224, (uint16_t*)analog_right_background_clip);
// Peak LED
tft.setClipRect(212, 145, 17, 17);
(percent > 174) ? tft.fillCircle(220, 153, 7, ILI9341_RED) : tft.fillCircle(220, 153, 7, ILI9341_WHITE);
tft.updateScreen();
// Needle
tft.setClipRect(right_min_x, right_min_y, right_max_x - right_min_x + 1, right_max_y - right_min_y + 1);
tft.drawLine(240, yEdge -1, x1, y1 -1, ILI9341_RED);
tft.drawLine(240, yEdge, x1, y1, ILI9341_MAGENTA);
tft.drawLine(240, yEdge +1, x1, y1 +1, ILI9341_RED);
tft.updateScreen();
}
}
LG
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• sensor
Und falls es beliebt, die linke Seite:
Code: /**************************************************************************/
/*!
@brief Paint the left side
*/
/**************************************************************************/
void drawNeedleLeft(uint8_t percent) {
if (percent != pastLeft) {
pastLeft = percent;
double scale = map(percent, 0, 220, 5700, 12300);
double arc = scale / 100 * DEG2RAD;
int16_t x1 = -115 + 193 * sin(arc);
int16_t y1 = 160 + 193 * cos(arc);
int16_t yEdge = 160 + 115 * cos(arc);
int16_t left_min_x = leftNeedleRectMinX;
int16_t left_min_y = leftNeedleRectMinY;
int16_t left_max_x = leftNeedleRectMaxX;
int16_t left_max_y = leftNeedleRectMaxY;
leftNeedleRectMinX = min(0, x1);
leftNeedleRectMinY = min(yEdge - 1, y1 - 1);
leftNeedleRectMaxX = max(0, x1);
leftNeedleRectMaxY = max(yEdge + 1, y1 + 1);;
left_min_x = min(left_min_x, leftNeedleRectMinX);
left_min_y = min(left_min_y, leftNeedleRectMinY);
left_max_x = max(left_max_x, leftNeedleRectMaxX);
left_max_y = max(left_max_y, leftNeedleRectMaxY);
// Background
tft.setClipRect(0, 45, 96, 224);
tft.writeRect(0, 45, 96, 224, (uint16_t*)analog_left_background_clip);
// Peak LED
tft.setClipRect(12, 145, 17, 17);
(percent > 174) ? tft.fillCircle(20, 153, 7, ILI9341_RED) : tft.fillCircle(20, 153, 7, ILI9341_WHITE);
tft.updateScreen();
// Needle
tft.setClipRect(left_min_x, left_min_y, left_max_x - left_min_x + 1, left_max_y - left_min_y + 1);
tft.drawLine(0, yEdge - 1, x1, y1 - 1, ILI9341_RED);
tft.drawLine(0, yEdge, x1, y1, ILI9341_MAGENTA);
tft.drawLine(0, yEdge + 1, x1, y1 + 1, ILI9341_RED);
tft.updateScreen();
}
}
Schön, dass sich jeder seine Nadel selbst einfärben kann.
Bei dem Magenta-Mittelstrich hab ich immer den Telekom-Jingle im Ohr .
LG
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• sensor
Schön langsam wird's was!
08:39 Peak-Leds Laufzeit optimiert (quick & dirty).
https://www.dropbox.com/s/efm2aiyn70xfrp...0.rar?dl=0
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• sensor,
Beiträge: 1.796
Themen: 17
Thanks Received: 7.366 in 1.036 posts
Thanks Given: 2.927
Registriert seit: May 2013
Bewertung:
6
Bruno,
wenn ich versuche Deinen Sketch zu kompilieren bekomme ich folgende Fehlermeldung.
Arduino: 1.8.12 (Windows 10), TD: 1.52, Board: "Teensy 4.0, Serial, 600 MHz, Faster, US English"
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\admin\Documents\Arduino\libraries -fqbn=teensy:avr:teensy40:usb=serial,speed=600,opt=o2std,keys=en-us -ide-version=10812 -build-path C:\Users\admin\AppData\Local\Temp\arduino_build_175268 -warnings=none -build-cache C:\Users\admin\AppData\Local\Temp\arduino_cache_857738 -verbose E:\Geraffel\Arduino\Teensy\RevoxA700\RevoxA700.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\admin\Documents\Arduino\libraries -fqbn=teensy:avr:teensy40:usb=serial,speed=600,opt=o2std,keys=en-us -ide-version=10812 -build-path C:\Users\admin\AppData\Local\Temp\arduino_build_175268 -warnings=none -build-cache C:\Users\admin\AppData\Local\Temp\arduino_cache_857738 -verbose E:\Geraffel\Arduino\Teensy\RevoxA700\RevoxA700.ino
Using board 'teensy40' from platform in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr
Using core 'teensy4' from platform in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=152 -DARDUINO=10812 -DARDUINO_TEENSY40 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files (x86)\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "C:\\Users\\admin\\AppData\\Local\\Temp\\arduino_build_175268\\sketch\\RevoxA700.ino.cpp" -o nul
Alternatives for SPI.h: [SPI 1.0]
ResolveLibrary(SPI.h)
-> candidates: [SPI 1.0]
"C:\\Program Files (x86)\\Arduino\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -std=gnu++14 -fno-exceptions -fpermissive -fno-rtti -fno-threadsafe-statics -felide-constructors -Wno-error=narrowing -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -D__IMXRT1062__ -DTEENSYDUINO=152 -DARDUINO=10812 -DARDUINO_TEENSY40 -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Program Files (x86)\\Arduino\\hardware\\teensy\\avr\\cores\\teensy4" "-IC:\\Program Files (x86)\\Arduino\\hardware\\teensy\\avr\\libraries\\SPI" "C:\\Users\\admin\\AppData\\Local\\Temp\\arduino_build_175268\\sketch\\RevoxA700.ino.cpp" -o nul
Alternatives for ILI9341_t3n.h: []
ResolveLibrary(ILI9341_t3n.h)
-> candidates: []
E:\Geraffel\Arduino\Teensy\RevoxA700\RevoxA700.ino:3:25: fatal error: ILI9341_t3n.h: No such file or directory
compilation terminated.
Bibliothek SPI in Version 1.0 im Ordner: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\SPI wird verwendet
Fehler beim Kompilieren für das Board Teensy 4.0.
Gruß Detlef
Da fehlt die Bibliothek ILI9341_t3n.h.
Aus dem Netz runterladen https://www.dropbox.com/s/1unwq7ciu65ali...n.rar?dl=0
und in den Ordner C:\Users\"Dein Username"\Documents\Arduino\libraries entpacken.
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• , dettel
(28.06.2020, 09:26)dettel schrieb: E:\Geraffel\
LG
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• winix
Beiträge: 1.796
Themen: 17
Thanks Received: 7.366 in 1.036 posts
Thanks Given: 2.927
Registriert seit: May 2013
Bewertung:
6
Hochladen hat nun funktioniert
Bruno,
könntest Du noch die richtige Verkabelung - mit Audishield - einstellen?
Dann wäre auch noch die Frage, wo das Signal an der A700 am besten abgegriffen werden soll.
Original werden ja VU und Peak gesondert angesteuert.
Gruß Detlef
Moin Detlef,
(28.06.2020, 10:38)dettel schrieb: Hochladen hat nun funktioniert
supi
(28.06.2020, 10:38)dettel schrieb: könntest Du noch die richtige Verkabelung - mit Audishield - einstellen?
Bitteschön:
(28.06.2020, 10:38)dettel schrieb: Dann wäre auch noch die Frage, wo das Signal an der A700 am besten abgegriffen werden soll.
Da hab ich mir noch keinen Kopp gemacht
LG
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• dettel
Als Versuch wäre ein Abgriff an den Strippen zu den VU-Metern zu wagen. Dort liegt eine Gleichspannung, welche die Hüllkurve (RMS) darstellt, an. Keine Ahnung ob die ausreicht.
Vorher muss der Sketch in der loop noch entsprechend modifiziert werden um A0 und A1 "zu lesen". Dafür braucht man keinen AudioShield.
Code: percent = map(analogRead(A0),0,1023,0,220); // Left Channel
.
.
.
percent = map(analogRead(A1),0,1023,0,220); // Right Channel
.
.
(28.06.2020, 11:23)gogosch schrieb: Als Versuch wäre ein Abgriff an den Strippen zu den VU-Metern zu wagen. Dort liegt eine Gleichspannung, welche die Hüllkurve (RMS) darstellt, an. Keine Ahnung ob die ausreicht.
Vorher muss der Sketch noch entsprechend modifiziert werden um A0 und A1 "zu lesen".
Einspruch .
Die A/D Wandler sind absolut nicht nötig - das ist doch der Sinn des Audio-Shields.
Dafür gibts auf dem Shield Audio-IN für beide Kanäle
Den Rest macht der SGTL5000 Chip perfekt.
Die komplette Parametrierung erfolgt im Programm.
Bitte die A/D Wandler komplett vergessen (schrieb ich bereits).
LG
Ich hab keinen Audioshield ......
Beiträge: 1.796
Themen: 17
Thanks Received: 7.366 in 1.036 posts
Thanks Given: 2.927
Registriert seit: May 2013
Bewertung:
6
5 Mitglieder sagen Danke an dettel für diesen Beitrag:5 Mitglieder sagen Danke an dettel für diesen Beitrag
• stephan1892, , dedefr, dg2dbm, sensor
(28.06.2020, 11:36)gogosch schrieb: Ich hab keinen Audioshield ......
Das ist schade, aber ich hatte auch schon erwähnt, dass der TEENSY genau mit diesem Shield eine perfekte Einheit bildet und auch die Audio-Lib grandios ist.
Sonst hätte man jeden anderen 32 Bit Controller mit 12Bit Wandlern nehmen können.
Und da wir immer etwas besonderes machen in diesen Projekten, warum sollte man dann die A/D Wandler nehmen - das kann jeder.
Mit der Audiolib ist auch FFT1024 ein Kinderspiel.
Und vor allem, ohne jede weitere Außenbeschaltung und sehr genau.
LG
(28.06.2020, 11:53)dettel schrieb: Löpt erst mal soweit
Detlef, Dein Loop läuft in 247ms durch, du hast nicht die aktuelle .INO
LG
2 Mitglieder sagen Danke an für diesen Beitrag:2 Mitglieder sagen Danke an für diesen Beitrag
• dettel, sensor
Beiträge: 1.796
Themen: 17
Thanks Received: 7.366 in 1.036 posts
Thanks Given: 2.927
Registriert seit: May 2013
Bewertung:
6
(27.06.2020, 09:01)DIYLAB schrieb: Moin,
hier der Download der neuesten Version: RevoxA700.zip
Geschwindigkeitssteigerung zu gestern knapp 300% .
...
Bruno, ich habe die aus dem von Dir in Post #222 angegebenen Link
Gruß Detlef
Ich hab mal auf die Schnelle eine Version für den AudioShield geschnitzt.
Kann es logischerweise nicht ausprobieren.
Link wie gehabt: https://www.dropbox.com/s/efm2aiyn70xfrp...0.rar?dl=0
Vielleich kann den Sketch mal wer starten und mit Signal an LineInL und LineInR am Shield testen.
1 Mitglied sagt Danke an für diesen Beitrag:1 Mitglied sagt Danke an für diesen Beitrag
• dettel
Beiträge: 1.796
Themen: 17
Thanks Received: 7.366 in 1.036 posts
Thanks Given: 2.927
Registriert seit: May 2013
Bewertung:
6
Hab's mal hochgeladen, Bild ist da, aber es zuckt nix
Gruß Detlef
Wäre ja auch zu schön, wenn sowas im Blindflug funzt!
Audio-Signal liegt an? Sonst zeigt es nur 0 an!
|