Measuring Wheel with Arduino UNO probleem

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 03 Apr 2019, 21:36

Hallo,

Ik heb een aparte voeding van 12v 3A voor het board. Had al zon vermoeden dat USB zo ie zo te weinig was. Ook met de aparte voeding werkt het display niet. Roep ik alleen het display aan met een eigen code dan werkt hij wel en ook het RGB Backlight

Advertisement

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor shooter » 03 Apr 2019, 22:45

nee hoor usb is voldoende, zet eerst eens voor elke lcd.print een // teken dan doet die regel even niet mee. dan zet je er een aan en kijk je of het wel werkt enz.
ik denk dat je de info veel te vaak naar het dislay stuurt.
dat klopt ook wel met de gedachte dat loop zo snel mogelijk gedaan moet worden.
paul deelen
shooter@home.nl

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 04 Apr 2019, 11:22

Koepel schreef: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.


Ik meet een spanning van 5V op het display.

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 04 Apr 2019, 13:58

Als ik deze code gebruik: dan werkt het display wel

Code: Alles selecteren
/*!
  * file SetColor.ino
  * brief SetColor.
  * @n This example Set the volume size and play music snippet.
  *
  * Copyright  [DFRobot](http://www.dfrobot.com), 2016
  * Copyright GNU Lesser General Public License
  *
  * version  V1.0
  * date  2017-2-10
  */

#include <Wire.h>
#include "DFRobot_RGBLCD.h"
int r,g,b;
int t=0;

DFRobot_RGBLCD lcd(16,2);  //16 characters and 2 lines of show

void setup() {
  Serial.begin(9600);
  // initialize
  lcd.init();

}

void loop() {

  r= (abs(sin(3.14*t/180)))*255;          //get R,G,B value
  g= (abs(sin(3.14*(t+60)/180)))*255;
  b= (abs(sin(3.14*(t+120)/180)))*255;
  t=t+3;
  lcd.setRGB(r, g, b);                  //Set R,G,B Value
  lcd.setCursor(0,0);
  lcd.print("DFRobot");
  lcd.setCursor(0,1);
  lcd.print("Gravity: RGB LCD");
  //R:0-255 G:0-255 B:0-255

  delay(1);
}

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor shooter » 07 Apr 2019, 18:59

onder aan staat een delay , probeer dat eens injouw code of nog meer zoals delay 100
paul deelen
shooter@home.nl

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 08 Apr 2019, 10:36

shooter schreef:onder aan staat een delay , probeer dat eens injouw code of nog meer zoals delay 100


Helaas heeft dit geen effect :(

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor baco1978 » 09 Apr 2019, 14:45

Als je deze regel:

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

vervangt voor deze regel (deze kwam ik ook al tegen in andere voorbeeldenvan DFRobot tegen):

DFRobot_RGBLCD lcd(16,2); //16 characters and 2 lines of show
Met vriendelijke groet Arjan

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 09 Apr 2019, 15:09

baco1978 schreef:Als je deze regel:

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

vervangt voor deze regel (deze kwam ik ook al tegen in andere voorbeeldenvan DFRobot tegen):

DFRobot_RGBLCD lcd(16,2); //16 characters and 2 lines of show



Dit was de oplossing dank je Baco1978

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

Re: Measuring Wheel with Arduino UNO probleem

Berichtdoor mhermens » 09 Apr 2019, 17:45

Dit is de code zoals die nu in mijn arduino zit. Deze werkt.
Heb hem nu ook zo aangepast dat hij meer kan meten als 6m zoals de code eerst was.
Verder de code wat opgeschoond met overbodige code.

Iedereen bedankt voor het mee denken.

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

//DFRobot_RGBLCD lcd(0x7c >> 1, 0xc0 >> 1, 16, 2); //deze code hielp het display over de rooien
DFRobot_RGBLCD lcd(16, 2);


//rgb_lcd lcd;

#define A 3
#define B 4
#define Key  12//key
#define D 79 //wiel Diameter 79mm
#define Z 40 //deelfactor counter aantal 40 = mm 400=cm 4000=dm

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

//Length measurement range is ± 6 M
void setup()
{
  //Serial.begin(9600);
  lcd.init();
  lcd.setRGB(100, 0, 255);
  lcd.setCursor(2, 0 );
  lcd.print("M:");
  lcd.setCursor(2, 1 );
  lcd.print("D:");
  lcd.setCursor(14, 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 > 1)
     { Mark = 0;
      Count = 0;
      Count_1 = 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 / Z;
      lcd.setCursor(11, 0 );
      lcd.print("     ");
    }

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

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

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

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

    Modetime = millis();
  }



  lcd.setCursor(6, 1 );//Displays the value of Distance
  lcd.print(Distance / 100000);
  lcd.print((Distance / 10000) % 10);
  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
    {
      if (Count > 0xffff)
      {
        Count_1 -= 1;
      }

      Count += 1;
    }

    else//Reverse measurement
    {
      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;
  }
}

Vorige

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 25 gasten