Measuring Wheel with Arduino UNO probleem
19 berichten
• Pagina 2 van 2 • 1, 2
Re: Measuring Wheel with Arduino UNO probleem
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
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
Re: Measuring Wheel with Arduino UNO probleem
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.
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
shooter@home.nl
Re: Measuring Wheel with Arduino UNO probleem
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.
Re: Measuring Wheel with Arduino UNO probleem
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);
}
Re: Measuring Wheel with Arduino UNO probleem
onder aan staat een delay , probeer dat eens injouw code of nog meer zoals delay 100
paul deelen
shooter@home.nl
shooter@home.nl
Re: Measuring Wheel with Arduino UNO probleem
shooter schreef:onder aan staat een delay , probeer dat eens injouw code of nog meer zoals delay 100
Helaas heeft dit geen effect
Re: Measuring Wheel with Arduino UNO probleem
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
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
Re: Measuring Wheel with Arduino UNO probleem
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
Re: Measuring Wheel with Arduino UNO probleem
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.
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;
}
}
19 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten