Measuring Wheel with Arduino UNO probleem

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 10
Geregistreerd: 02 Apr 2019, 12:23
Woonplaats: Beuningen

Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 02 Apr 2019, 12:28

Hulp gevraagd,

Ik ben bezig met het volgende https://www.dfrobot.com/forum/viewtopic.php?f=2&t=2967 project na te maken. Maar kom er helaas even niet uit.

Na het laden van het programma krijg ik een zwarte balk op het LCD scherm.
Waar kan het verkeerd gaan. tijdens de compilate test geeft hij geen fouten aan.

groet Mark

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor Koepel » 02 Apr 2019, 19:41

Kun je een foto van het display maken ? Ik neem aan dat het zwarte blokjes zijn ?
Als je heel schuin kijkt, eventueel met zonlicht er schuin op, zie je dan iets van de tekst ?

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor shooter » 02 Apr 2019, 20:22

hoe heb je het allemaal aangesloten en laat de software zien, tevens welke libs heb je gebruikt?
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor Gij Kieken » 02 Apr 2019, 20:51

Misschien contrast bijregelen.

Berichten: 10
Geregistreerd: 02 Apr 2019, 12:23
Woonplaats: Beuningen

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 03 Apr 2019, 08:17

Foto van het display.
Afbeelding

Het vreemde is als ik een code gebruik om alleen het display aan te sturen dan werkt het wel.


Foto van aansluiting
Afbeelding

Afbeelding

Code gebruikt voor meetwiel:
Code: Alles selecteren
#include <Wire.h>
#include "DFRobot_RGBLCD.h"

DFRobot_RGBLCD lcd(0x7c >> 1, 0xc0 >> 1, 16, 2);


//rgb_lcd lcd;

#define A 3
#define B 4
#define Key  12//key

#define D 79 //Diameter 79mm

float C = 0; //perimeter
unsigned int Distance;
int VA = 0;
int VB = 0;
unsigned long Count = 0;//count
unsigned int Count_1 = 0; //Negative count
unsigned char flag = 1, Mark = 0;
unsigned long lasttime = 0, Modetime = 0;

//Length measurement range is ± 6 M
void setup()
{
  Serial.begin(9600);
  lcd.init();
  lcd.setRGB(255, 255,0);
  lcd.setCursor(2, 0 );
  lcd.print("M:");
  lcd.setCursor(2, 1 );
  lcd.print("D:");
  lcd.setCursor(12, 1 );
  lcd.print("cm");
  pinMode(A, INPUT_PULLUP); //Pull-up input
  pinMode(B, INPUT_PULLUP);
  pinMode(Key, INPUT);
  attachInterrupt(1, interrupt, RISING);
  C = D * PI;
}

void loop()
{
  if (millis() - 150 > lasttime)//Detect keys once every 150ms
  {
    if (digitalRead(Key) == HIGH)
      if (digitalRead(Key) == HIGH)
        Mark += 1;
    if (Mark > 2)
      Mark = 0;

    while (digitalRead(Key) == HIGH);
    lasttime = millis();
  }

  if (millis() - 100 > Modetime)//Refresh the data every 100ms
  {
    if (Mark == 0) //Cleared
    {
      lcd.setCursor(6, 0 );
      lcd.print("Reset    ");
      Distance = C * Count / 40;
      flag = 3;
      lcd.setCursor(11, 0 );
      lcd.print("     ");
    }

    if (Mark == 1) //Calculate the measured value
    {
      lcd.setCursor(6, 0 );
      lcd.print("Detection");//
      lcd.setCursor(4, 1 );
      if (Count > 0 && Count < 0xffff)//Determine whether the length is positive
      {
        lcd.print('-');//The length is negative
        Distance = C * Count / 40;
      }

      else if (Count == 0 && Count_1 == 0 )//Determine whether the length is zero
      {
        lcd.setCursor(4, 1 );
        lcd.print(' ');
        Distance = C * Count / 40;
      }

      else//Length is positive
      {
        lcd.print('+');
        Distance = Count_1 * C  / 40;
      }
    }

    else if (Mark == 2) //lock
    {
      lcd.setCursor(6, 0 );
      lcd.print("Lock     ");
      Count = 0;
      Count_1 = 0;
    }

    Modetime = millis();
  }



  lcd.setCursor(5, 1 );//Displays the value of Distance
  lcd.print(Distance / 10000);
  lcd.print((Distance / 1000) % 10);
  lcd.print((Distance / 100) % 10);
  lcd.print('.');
  lcd.print((Distance / 10) % 10);
  lcd.print(Distance % 10);
}

void interrupt()//Interrupt handler
{
  VB = digitalRead(B);
  if (Mark == 1)//Detects whether the current mode is a measurement
  {
    if (VB == 1)//To determine whether the positive measurement
    {
      flag = 1;
     
      if (Count > 0xffff)
      {
        Count_1 -= 1;
      }

      Count += 1;
    }
   
    else//Reverse measurement
    {
      flag = 0;
      Count -= 1;
     
      if (Count > 0xFFFF)
      {
        Count_1 += 1;
      }
    }
   
    //Count is cleared over the range
    if (Count < 0xFFFF && Count > 0x294A)
      Count = 0;

    else if (Count < 0xFFFFD6B5 && Count > 0xFFFF)
      Count = 0;
  }
}


Libs voor lcd in de bijlage
DFRobot_RGBLCD.zip
(17.55 KiB) 329 keer gedownload

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor shooter » 03 Apr 2019, 10:04

onder in de loop staan een hele rits lcd.print dus die staat telkens aan zet dat eens in een functie die je af en toe aanroept.
en ik snap de interupt niet, waar is kanaal A
paul deelen
shooter@home.nl

Berichten: 10
Geregistreerd: 02 Apr 2019, 12:23
Woonplaats: Beuningen

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 03 Apr 2019, 10:27

Ik zal maar even vertellen dat ik nieuw ben met arduino en nog geen programmeer ervaring heb. Dit leek me een makkelijk kopieerbaar project wat ik dus snel in kon gaan zetten op mijn werk. Best een baal momentje toen het niet werkte.
Dus allen hulp in deze is even welkom. Ik heb voor mezelf ook een adruino aangeschaft om rustig te gaan leren. Maar het zou mooi zijn als dit al (met hulp van jullie) ging werken.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor Koepel » 03 Apr 2019, 20:02

Wij begrijpen er nog minder van dan jij :o

Een LCD display kan de Arduino library gebruiken: https://www.arduino.cc/en/Reference/LiquidCrystal.
Er zijn ook gangbare LCD displays met I2C interface.

Er zijn allerlei standaard libraries om dingen te kunnen doen.

Jij hebt echter een DFRobot board met DFRobot bibliotheken. Je bent dus niet vrij om zelf iets te doen, je zit helemaal vast aan die spullen. Dat is jammer :(
De code die je gebruikt, die klopt niet helemaal maar zal zo ongeveer wel kunnen werken. Ik zie helaas niet de fout waardoor het display niet meer werkt.

Voor anderen:
Het board is Arduino Uno compatible: https://www.dfrobot.com/product-838.html.
Het shield bevat geen intelligentie, en is geschikt voor een XBee. Er is een schema beschikbaar: https://www.dfrobot.com/product-1009.html.
Het display heeft geen contrastregeling. Dat zit in software maar lijkt nog niet geimplementeerd :? Het display: https://www.dfrobot.com/product-1609.html en de library op Github: https://github.com/DFRobot/DFRobot_RGBLCD.

Voor mhermens:
Ik weet niet of we veel kunnen helpen. De meeste van ons hebben een bak vol spullen om iets uit te proberen, maar we hebben niet die DFRobot spullen.
Dus het display werkt, alleen niet samen met het meetwiel ?
Kun je de 5V pin meten ? Is die hoger dan 4.5V ?
Als je de knop en de module voor het meetwiel verwijderd, zie je dan iets op het display ?

Kun je vertellen welk arduino board je hebt gekocht ?
Om iets uit te proberen kun je voor 3 euro een Arduino Uno op AliExpress kopen.

Berichten: 10
Geregistreerd: 02 Apr 2019, 12:23
Woonplaats: Beuningen

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 03 Apr 2019, 20:14

Ik heb alle spullen zoals vermeld in het topic bij hun gekocht.
Ook de code daar vandaan getrokken en de libs

Main Components
DFRduino UNO R3 that fully compatible withArduino UNO R3 as a main board
Gravity: I2C 16x2 Arduino LCD with RGB Backlight Display
Cable Adapter Module 4
Gravity: IO Expansion Shield for Arduino V7.1
Digital Push Button (.NET Gadgeteer Compatible)
D80mm Silicone Wheel For TT Motor
Incremental Photoelectric Rotary Encoder - 400P/R

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor Koepel » 03 Apr 2019, 21:32

Heb je een multimeter ?
Kun je de 5V op het display meten ? Of anders de 5V op het DFRobot board of op het shield.
Als je geen multimeter hebt, heb je dan een adapter van 7.5 or 9V ? Kun je die aan het DFRobot verbinden ?
LCD displays hebben de gewoonte om bij een spanning van 4.5V of lager niet goed te werken.

Volgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 22 gasten