Themabewertung:
  • 3 Bewertung(en) - 3.67 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Digitales VU-Meter (Mikrocontroller, Display, LED) reVox A700
(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  LOL

Hi Andreas,

Dir sollte aber klar sein, dass eine Doppelsiplay-Version erst kommt, wenn die A700 Version fertig ist Floet .
Das kann durchaus eine Weile dauern.

LG
Bruno
[-] 2 Mitglieder sagen Danke an für diesen Beitrag:
  • dedefr, akguzzi
Das ist eine sehr verlockende Aussicht... bis dahin mach ich die A77 mit einem A700-VU zum absoluten Unikat Dance3

schönen Tag
Andreas
[-] 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.
[-] 5 Mitglieder sagen Danke an für diesen Beitrag:
  • ILRAK, stephan1892, sensor, , dettel
(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 Thumbsup .
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:
  • , 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 Denker .

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 Lipsrsealed2
[-] 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:
  • , 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 LOL .

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 Floet .

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:
  • , 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:
  • 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:
  • 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  Lol1 .

LG
[-] 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:
  • sensor,
At 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: [SPIAt1.0]
ResolveLibrary(SPI.h)
  -> candidates: [SPIAt1.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:
  • , dettel
(28.06.2020, 09:26)dettel schrieb: E:\Geraffel\

Lol1 Thumbsup
LG
[-] 1 Mitglied sagt Danke an für diesen Beitrag:
  • winix
Hochladen hat nun funktioniert Thumbsup 

At 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 Thumbsup 

supi  Thumbsup

(28.06.2020, 10:38)dettel schrieb: könntest Du noch die richtige Verkabelung - mit Audishield - einstellen?

Bitteschön:

[Bild: Teensy-Display.png]

(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  Floet

LG
[-] 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  Oldie .
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).

[Bild: schematic-audio4.png]

[Bild: teensy4_audio_back.jpg]

LG
Ich hab keinen Audioshield ......
Löpt erst mal soweit Dance3 

[Bild: IMG-7525.jpg]

[Bild: IMG-7526.jpg]
Gruß Detlef
[-] 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 Dance3 

Detlef, Dein Loop läuft in 247ms durch, du hast nicht die aktuelle .INO  Lipsrsealed2
LG
[-] 2 Mitglieder sagen Danke an für diesen Beitrag:
  • dettel, sensor
(27.06.2020, 09:01)DIYLAB schrieb: Moin,

hier der Download der neuesten Version: RevoxA700.zip

Geschwindigkeitssteigerung zu gestern knapp 300% Raucher  .
...

At 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:
  • dettel
Hab's mal hochgeladen, Bild ist da, aber es zuckt nix

[Bild: IMG-7544.jpg]
Gruß Detlef
Wäre ja auch zu schön, wenn sowas im Blindflug funzt!
Audio-Signal liegt an? Sonst zeigt es nur 0 an!


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Lightbulb Digitales Zählwerk (universal, Arduino nano, OLED) für Bandmaschinen und Tapedecks DIYLAB 441 125.720 13.09.2024, 17:46
Letzter Beitrag: DJEEX
  LED-Blinker – Hilfe bei Schaltung benötigt aspenD28 9 3.078 29.03.2022, 10:51
Letzter Beitrag: Accu-Fan
  Reparatur VU Meter ReVox A77 Gunar 16 12.382 21.02.2022, 14:33
Letzter Beitrag: havox
  Digitales Zählwerk ( nur Counter ) reVox B77 dedefr 134 34.488 06.10.2021, 14:14
Letzter Beitrag: scope
Lightbulb Digitales Zählwerk ( Realtime, Meter, Counter ) reVox A700 DIYLAB 51 16.424 22.08.2021, 19:21
Letzter Beitrag: Wolf1
  Digitales Zählwerk ( nur Counter ) AKAI GX 620 Rüsselfant 520 126.328 27.05.2021, 09:42
Letzter Beitrag: Sparbier635D



Benutzer, die gerade dieses Thema anschauen: 21 Gast/Gäste