Hoe mpa opmeten, en bar weergeven

Ik wil met de
https://es.aliexpress.com/item/1005004349225653.html?spm=a2g0o.productlist.main.4.4f787W5U7W5UOq&aem_p4p_detail=202502030810494780419516182060045227919&algo_pvid=9de60157-2321-41da-853c-93c4d453be4c&algo_exp_id=9de60157-2321-41da-853c-93c4d453be4c-3&pdp_ext_f={"order"%3A"63"%2C"eval"%3A"1"}&pdp_npi=4%40dis!EUR!21.04!13.88!!!21.04!13.88!%40211b80e117385990491856655e51eb!12000028856816647!sea!NL!0!ABX&curPageLogUid=xVdk0zv70wUt&utparam-url=scene%3Asearch|query_from%3A&search_p4p_id=202502030810494780419516182060045227919_1
(Ik heb de 0-1 MPA)
een luchtdrukmeter maken maar, welke bibliotheken moet ik gebruiken, en hoe zorg ik dat hij het in BAR weergeeft op een OLED display?

Heb je ook een link naar een data sheet?
Je moet eerst weten hoe de druk uitgelezen moet worden...
Welke oled heb je?
Heb je zelf al bibliotheken gezocht?
Welke arduino heb je?

Dit is de link naar het artikel in de Nederlandse taal.
De beschrijving die erbij staat is niet erg duidelijk.
Klik op meer info op die pagina voor meer info (dûhh).
Er komt een spanning uit die kan liggen tussen nul en 10 volt, nul en 5 volt, 0.5 en 4.5 volt of SPI.
Voor SPI kom je wat te kort met 3 draden, maar er staat wel bij dat er standaard 0.5 - 4.5 volt uitkomt op de groen/gele draad.
Daarmee kun je die groen / gele draad direct op een Arduino's analoge ingang aansluiten, zolang het een Arduino is die zelf met 5 volt werkt.
En vergeet niet ervoor te zorgen dat de GND van de Arduino ook de GND van de sensor is, anders gaat het fout.
Dus niet met een 3 volt Arduino variant, daarvoor moet je dan nog een spanningsdeler maken.
Je hebt daar geen bibliotheek voor nodig, maar je moet wel de karakteristieken weten van het uitgangssignaal.
Die vindt men doorgaans in een datasheet, maar die is niet te vinden voor een sensor met dat typenummer.
De kans is daarmee groot dat deze leverancier iets levert dat niet van de betreffende fabrikant afkomstig is, of al een tijd niet meer leverbaar is.
Wanneer je dat toch wil gaan toepassen, kun je nog gaan testen en de karakteristiek zelf gaan registreren, maar dan heb je dus wel een referentie drukgever nodig zodat je weet welke druk je meet.
De kans is ook groot dat de meetresultaten niet lineair zijn, en je hebt dan mazzel als ze wel logarithmisch zijn, en niet in een of andere vreemde curve zouden verlopen.
Het zou best wel eens kunnen zijn dat er bibliotheken of formules te vinden zijn die je een logarithmische waarde laten omzetten naar een waarde die je gemakkelijker verwerkt, dat weet ik niet.
Maar puur voor het binnenhalen van de uitgang van die sensor heb je dus geen bibliotheek nodig.
Ook hier geldt hetzelfde als de tips die je in je andere onderwerp al hebt ontvangen:
Zorg er voor dat je eerst elk onderdeel onder controle krijgt, en ga deze dan combineren.
Dus de sensor en het verwerken van diens signaal, en het afbeelden van jouw resultaat op een OLED.
Welk type OLED is dat en wat wil je precies laten zien ?
Tekst ?
Een grafiek ?
Een waarschuwing als er bepaalde waarden worden bereikt ?
Dat moet je zelf beantwoorden en zelf uitwerken.
Er zal erg weinig respons komen op vragen om de code even voor je te maken en vooraf te testen voor jij er mee aan de gang zult gaan.

MPa naar bar is vermenigvuldigen met 10, das alvast je eerste formule.

https://es.aliexpress.com/item/1005008046075993.html?spm=a2g0o.productlist.main.24.237ad5UNd5UNMI&aem_p4p_detail=2025020406404712848133899178000048197759&algo_pvid=2ca885ec-3af8-44c9-b08e-c2d3ec1327fe&algo_exp_id=2ca885ec-3af8-44c9-b08e-c2d3ec1327fe-23&pdp_ext_f={"order"%3A"24"%2C"eval"%3A"1"}&pdp_npi=4%40dis!EUR!2.22!1.44!!!16.35!10.63!%40210390c917386800479007857e4a7b!12000043415056054!sea!NL!0!ABX&curPageLogUid=DvnjRLa3Say8&utparam-url=scene%3Asearch|query_from%3A&search_p4p_id=2025020406404712848133899178000048197759_6

arduino uno

nee

O

ja, alleen ik kon niets vinden!

Nou, al die vragen in een keer :sweat: dat was wel heel veel!
Maar goed, het is toch gelukt...

Ik wil de mpa keer 10 doen (dan word het bar)
en welke oled het is dat heb je in het vorige bericht al kunnen lezen.

Nadeel van kopen bij ali is at de service 0 is.
Zonder type nummer wordt het vinden van een oled library wel lastig.
Staat er een nummer/code op de oled module?
En spaanstalige links zijn ook niet heel handig...

Nederlandstalige link naar de SSD1306 OLED

Dat is dus een SSD1306 aldus de beschrijving in het Chinees (geen idee welk dialect of sub-taal).
Daarmee kun je OliKraus' U8g2lib (Klik !) bibliotheek gebruiken, en dat vergt enige gewenning / leren.
Dus ook hier weer: gebruik de voorbeelden die er bij zitten, let goed op wat je wordt verteld over hoe je de bibliotheek vertelt met welk display 'ie te maken heeft, want er worden er meer ondersteund, en oefen aan de hand van de voorbeelden om duit onder de knie te krijgen.
Let er ook op dat deze OLED module voor op 3.3 Volt werkt (denk ik, dat is de enige spanning die genoemd wordt bij je verkoper, en het Chinees waar dat tussen staat kan ik niet lezen) en dus niet direct met je Arduino Uno (5 Volt) gevoed en bediend kan worden.

Ik heb hem ook al op 5v geprobeerd maar hij deed het gewoon!

Kwestie van wachten...

wat bedoel je?

...wachten tot hij het niet meer doet...

Doet hij het dan definitief niet meer! :open_mouth:

??? bedoel ik.

Die kans zit er zeker in...

ok, ik ben lang niet actief geweest (op dit forum) maar ik heb nog een vraag. ik men klaar met de code:

#include <Adafruit_GFX.h>        // Voor grafische weergave
#include <Adafruit_SSD1306.h>   // Voor OLED-display

Adafruit_SSD1306 display(128, 64, &Wire, -1); // Maak een OLED-display object

int sensor = A0;

float mpa;
float bar;

void setup() {
  Serial.begin(9600);         // Stel de seriële monitor in
  pinMode(sensor, OUTPUT);

  // OLED-display initialisatie
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 0x3C is het I2C-adres van het OLED-display
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(4);
}

void loop() {
  mpa = analogRead(sensor);
  bar = (mpa * 10.0)
  Serial.println(bar);   



 // Weergave op het OLED-display
  display.clearDisplay();
  
  // Stel de tekstgrootte in op 4
  display.setTextSize(4); 
  display.setCursor(0, 0);
  display.print("bar");

  display.display(); // Update het OLED-display

delay(2000);
}

en nu weergeeft hij 0.5 op het oled scherm (0.91 inch)
maar onder de 0 staat nog een dakje. hoe kan ik dat verwijderen.

Ik zou gewoon een spatie over het dakje printen...
Overigens snap ik niet waar dat dakje vandaan komt...
En eigenlijk zie ik ook niet hoe je 0.5 naar het scherm schrijft...

Wanneer de sketch die je laat zien ook de sketch is die je gebruikt hebt, zie ik ook niet waar je die waarde naar je scherm stuurt.
Wel zie ik dat je de tekst "bar" naar het scherm print (eigenlijk wordt zo'n scherm niet geprint, maar getekend).
Wat ik ook zie is dat je elke 2 seconden het scherm wist, en dan alles opnieuw naar het scherm stuurt.
Wat je nog kunt doen, is tijdelijk een pauze te plaatsen na display.clearDisplay();, en dan gaat kijken of dat dakje er dan ook nog staat (zou niet zo moeten zijn).

Dat wissen is een relatief langzame methode (vanwege dat tekenen), het wissen van het hele scherm betekent dat er overal een bepaalde waarde wordt gestuurd, dus elke pixel krijgt een nieuwe waarde.
Het is slimmer om alleen het gebied te wissen waar je je nieuwe waarde wil afbeelden, dan loopt je uiteindelijke sketch sneller en dus soepeler af.
Dat wissen doe je dus door spaties te "printen".

ik weet niet waar die aanhalingstekens vandaan komen, in de code die ik gecompileerd had stond dat er niet

dus na display.clearDisplay();, moet er komen te staan:

delay(100);    //Nog een vraag, hoe lang moet de delay zijn?

toch

of moet ik nou gewoon op de plaats van:

  display.clearDisplay();

Dit zetten:

  display.setTextSize(4); 
  display.setCursor(0, 0);
  display.print("      ");