Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Blink without Delay
- Turns on and off a light emitting diode (LED) connected to a digital pin,
- without using the delay() function. This means that other code can run at the
- same time without being interrupted by the LED code.
- The circuit:
- - Use the onboard LED.
- - Note: Most Arduinos have an on-board LED you can control. On the UNO, MEGA
- and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN
- is set to the correct LED pin independent of which board is used.
- If you want to know what pin the on-board LED is connected to on your
- Arduino model, check the Technical Specs of your board at:
- https://www.arduino.cc/en/Main/Products
- created 2005
- by David A. Mellis
- modified 8 Feb 2010
- by Paul Stoffregen
- modified 11 Nov 2013
- by Scott Fitzgerald
- modified 9 Jan 2017
- by Arturo Guadalupi
- This example code is in the public domain.
- https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay
- */
- // adding your headers and functions
- #include <EEPROM.h>
- #include <HX711.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- // Pin definitie voor HX711
- const int LOADCELL_DOUT_PIN = 13;
- const int LOADCELL_SCK_PIN = 12;
- // HX711 object
- HX711 scale;
- // LCD object
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- // EEPROM address voor kalibratiefactor
- const int CALIBRATION_FACTOR_ADDRESS = 0;
- // Kalibratiefactor variabele
- float calibration_factor;
- // Functie om kalibratiefactor uit EEPROM te lezen
- float readCalibrationFactor() {
- float calFactor;
- EEPROM.get(CALIBRATION_FACTOR_ADDRESS, calFactor);
- if (isnan(calFactor)) {
- calFactor = 1.0; // Standaard kalibratiefactor als er nog geen data is opgeslagen
- }
- Serial.print("Kalibratiefactor gelezen: ");
- Serial.println(calFactor);
- return calFactor;
- }
- // Functie om gewicht af te ronden op dichtstbijzijnde 0.5 kg
- float roundToNearestHalfKg(float weight) {
- return round(weight * 2) / 2.0;
- }
- // constants won't change. Used here to set a pin number:
- //const int ledPin = LED_BUILTIN;// the number of the LED pin
- // Variables will change:
- //int ledState = LOW; // ledState used to set the LED
- // Generally, you should use "unsigned long" for variables that hold time
- // The value will quickly become too large for an int to store
- unsigned long previousMillis = 0; // will store last time LED was updated
- // constants won't change:
- const long interval = 1000; // interval at which to blink (milliseconds)
- void setup() {
- // set the digital pin as output:
- // pinMode(ledPin, OUTPUT);
- // adding your init here
- Serial.begin(9600);
- // LCD initialisatie
- lcd.init();
- lcd.backlight();
- lcd.setCursor(0, 0);
- lcd.print("Initialiseren...");
- Serial.println("Initialiseren...");
- // HX711 initialisatie
- scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
- // Lees de kalibratiefactor uit de EEPROM
- calibration_factor = readCalibrationFactor();
- scale.set_scale(calibration_factor);
- scale.tare(); // Zet de huidige leeswaarde op 0
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Klaar voor meting");
- Serial.println("Klaar voor meting");
- delay(2000);
- lcd.clear();
- }
- void loop() {
- // here is where you'd put code that needs to be running all the time.
- // check to see if it's time to blink the LED; that is, if the difference
- // between the current time and last time you blinked the LED is bigger than
- // the interval at which you want to blink the LED.
- unsigned long currentMillis = millis();
- if (currentMillis - previousMillis >= interval) {
- // save the last time you blinked the LED
- previousMillis = currentMillis;
- // sticking the event that needs to heppen every second here:
- // Lees het gewicht en converteer naar kg
- float gewicht = scale.get_units(10) / 1000.0;
- // Zorg ervoor dat het gewicht nooit negatief is
- if (gewicht < 0) {
- gewicht = 0;
- }
- // Rond het gewicht af op de dichtstbijzijnde 0.5 kg
- float afgerond_gewicht = roundToNearestHalfKg(gewicht);
- // Toon het gewicht op de LCD
- lcd.setCursor(0, 0);
- lcd.print("Gewicht: ");
- lcd.print(afgerond_gewicht);
- lcd.print(" kg");
- // Toon het gewicht op de seriële monitor
- Serial.print("Gewicht: ");
- Serial.print(afgerond_gewicht);
- Serial.println(" kg");
- // if the LED is off turn it on and vice-versa:
- // if (ledState == LOW) {
- // ledState = HIGH;
- // } else {
- // ledState = LOW;
- // }
- // set the LED with the ledState of the variable:
- // digitalWrite(ledPin, ledState);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement