Acties:
  • 0 Henk 'm!

  • H143
  • Registratie: Juli 2006
  • Laatst online: 19:28
mad_max234 schreef op zondag 05 juni 2011 @ 15:13:
Nee dat zal niet zomaar gaan werken. sowieso kan je router niet netwerk delen via die usb zover ik weet, dus die gooit roet in het water. En tweede is dat arduino niet zomaar via de usb verbonden kan worden, zal nooit gaan werken.

Koop een arduino en los ethernet schield en je heb binnen 10min een arduino server online die je aan elke router kan hangen. ;)
de usb kan gedeeld worden via de router voor bijvoorbeeld een printer of hdd.

is het wel mogelijk als ik een ethernet shield er aan koppel dat ik dan via een website op de router commando's door kan sturen naar de aruino?

Acties:
  • 0 Henk 'm!

  • DeKemp
  • Registratie: Maart 2007
  • Laatst online: 24-06 22:15
Ik heb hier een Arduino Uno, met een 328P. Nu wil ik hier de bootloader inzetten omdat er wat fout was gegaan. Maar nu heb ik de HEX file en fusebits nodig, heb al gezocht maar ik weet niet welke ik nodig heb. Voor het proggen gebruik ik niet de arduino maar een andere proggger. Weet iemmand waar ik de files vandaan kan halen?

Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
zijn er meer Arduino tweakers die nu problemen ervaren bij Pachube.com ?
feeds die ik ken zijn allemaal frozen, mijn feed komt niet meer alive na een cold reboot van de arduino.....

en heeft iemand tips/voorbeelden hoe ik de gemeten waarden naar een eigen MySql database kan sturen (en van daaruit de grafieken laat genereren).

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • harold65
  • Registratie: Mei 2009
  • Laatst online: 25-12-2022

harold65

Slimme meter:

NielsTn schreef op zondag 05 juni 2011 @ 21:07:
zijn er meer Arduino tweakers die nu problemen ervaren bij Pachube.com ?
feeds die ik ken zijn allemaal frozen, mijn feed komt niet meer alive na een cold reboot van de arduino.....

en heeft iemand tips/voorbeelden hoe ik de gemeten waarden naar een eigen MySql database kan sturen (en van daaruit de grafieken laat genereren).
Pachube ligt inderdaad plat. Mijn schaduwsite Exosite krijgt wel data dus de arduino is alive.

Misschien een idee om jsunnyreports te gebruiken?

Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away


Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
Pachube.com is weer hersteld, centraal probleem getackled :)

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • DeKemp
  • Registratie: Maart 2007
  • Laatst online: 24-06 22:15
DeKemp schreef op zondag 05 juni 2011 @ 21:06:
Ik heb hier een Arduino Uno, met een 328P. Nu wil ik hier de bootloader inzetten omdat er wat fout was gegaan. Maar nu heb ik de HEX file en fusebits nodig, heb al gezocht maar ik weet niet welke ik nodig heb. Voor het proggen gebruik ik niet de arduino maar een andere proggger. Weet iemmand waar ik de files vandaan kan halen?
Het is gelukt, heb de goede bootloader gevonden en fusebits. Nu kan ik eindelijk weer verder. En als die in de toekomst weer gaat upfucken dan weet ik hoe ik moet repareren :). ''I hope your next project DOESN"T work!'' quote eevblog :).

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

alexswart schreef op zaterdag 04 juni 2011 @ 15:15:
weet iemand ook of het mogelijk is om een arduino uno op een linksys wrt160nl router aantesluiten.
op de router wil ik dan een webinterface draaien om mijn nodo aan te sturen. de wrt160nl draait op dd-wrt.

zo kan ik vanaf elke lokatie naar mijn router surfen en mijn verlichting aan en uitschakelen zonder dat er een pc de hele dag staat te brullen.

mvg Alex
Ik zou een duemilanove pakken dan, daar zit een ftdi chip op waar gewoon drivers voor zijn voor dd-wrt. (voor een uno weet ik het niet zeker)

http://www.dd-wrt.com/wiki/index.php/USB -> USB To Serial:

dan kan je op je router cronjobs en pagina's bouwen

[ Voor 4% gewijzigd door Rmg op 06-06-2011 22:23 ]


Acties:
  • 0 Henk 'm!

  • H143
  • Registratie: Juli 2006
  • Laatst online: 19:28
Rmg schreef op maandag 06 juni 2011 @ 22:22:
[...]


Ik zou een duemilanove pakken dan, daar zit een ftdi chip op waar gewoon drivers voor zijn voor dd-wrt. (voor een uno weet ik het niet zeker)

http://www.dd-wrt.com/wiki/index.php/USB -> USB To Serial:

dan kan je op je router cronjobs en pagina's bouwen
ok er zit dus verschil in de drivers mischien toch maar eens op zoek naar een duemilanove

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Ik heb niks gezegd. O-)

Was niet helemaal bewust van de mogelijkheden van je router. Maar via normale router en usb printerport zal het lastig worden al dan niet onmogelijk, op paar routers na die je makkelijk kan modden. Dan ben je beter af met ethernet van ongeveer 1 a 2 tientjes, heb je binnen paar minuten een arduino servertje draaien waar je vanuit het internet gewoon rechtstreeks bij kan.

[ Voor 8% gewijzigd door mad_max234 op 09-06-2011 01:44 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

Verwijderd

wat moet ik invoeren om te programmeren om 2 of meer pins te gebruiken met leds die gewoon simpel knipperen

Acties:
  • 0 Henk 'm!

  • real[B]art
  • Registratie: Februari 2000
  • Laatst online: 03-09 19:42

real[B]art

CTRL+ALT+D1337

Verwijderd schreef op dinsdag 14 juni 2011 @ 18:12:
wat moet ik invoeren om te programmeren om 2 of meer pins te gebruiken met leds die gewoon simpel knipperen
Da's makkelijk zat, op www.google.nl voer je in 'arduino for dummies'. ;)

"The general rule on about people on IRC seems to be "Attractive, single, mentally stable: choose two"


Acties:
  • 0 Henk 'm!

Verwijderd

thanks man maar ik kan nog steeds niets vinden wat je moet invullen voor 2 of meer pins

[ Voor 12% gewijzigd door Verwijderd op 14-06-2011 22:14 ]


Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 20:07
Zoals ook in je andere topic gemeld is, mag je best wat meer inzet tonen.
Klikje
En ja, die is voor 1 led, maar als je die paar regels code niet kan ombouwen naar het laten knipperen van meerdere led's (desnoods met trial & error), dan kan je beter wat anders gaan doen. :|

**Edit**
Sterker nog, het voorbeeld wat je zoekt staat letterlijk in de topicstart. Het laten knipperen van 2 led's 8)7

[ Voor 16% gewijzigd door CrashOverDrive op 14-06-2011 22:58 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het output voltage van de arduino uno is toch 5V??
Dus als ik hier 18V op aansluit wordt het om gezet naar 5V??

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Verwijderd schreef op woensdag 15 juni 2011 @ 19:51:
Het output voltage van de arduino uno is toch 5V??
Dus als ik hier 18V op aansluit wordt het om gezet naar 5V??
....
Ja maar je zit tegen het limiet aan te werken....

http://arduino.cc/en/Main/ArduinoBoardUno
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V

Beter is tussen de 7 en 12v.
Verwijderd schreef op dinsdag 14 juni 2011 @ 22:03:
[...]


thanks man maar ik kan nog steeds niets vinden wat je moet invullen voor 2 of meer pins
Komop, ik heb je deze link in een ander topic al gegeven... er staat gewoon duidelijk hoe en wat...

http://www.arduino.cc/en/Reference/DigitalWrite

digitalWrite(pin, value)

om pin 1 tot 13 in te schakelen doe je een getal tussen de 1 en de 13 in pin en 0 (uit) of 1(aan) in de value.
Staat er vrij duidelijk. Heb je überhaupt wel een beetje kennis van programmeren en/of elektronica?

Ik zou zeggen kijk eens naar 1 van deze boeken Op deze manier helpt niemand je straks meer anders

Acties:
  • 0 Henk 'm!

  • Mescaline
  • Registratie: Oktober 2007
  • Laatst online: 10-09 23:38
Verwijderd schreef op dinsdag 14 juni 2011 @ 18:12:
wat moet ik invoeren om te programmeren om 2 of meer pins te gebruiken met leds die gewoon simpel knipperen
2x digitalWrite() achter elkaar gebruiken?

http://www.arduino.cc/en/Reference/DigitalWrite

Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
Ik ben ook met een arduino aan het prutsen geslagen. Ik ben bezig met 1-wire temperatuur sensoren. Temperaturen worden uitgelezen en gecombineerd met sensor-id in een externe mysql database geschreven.

Nu kan ik meten tot 7 sensoren, maar daarboven verrekt ie het. Als ik bij het zoeken naar 1-wire sensoren de laatst toegevoegde eruit trek krijg ik een melding 146* sensoren gevonden.
Ik gebruik een "powered" systeem
Iemand een idee hoeveel sensoren er tegelijk uitgelezen kunnen worden?


* kan ook ander getal zijn

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • Phalox
  • Registratie: Oktober 2006
  • Laatst online: 06-04 13:23

Phalox

Solar Powerrrd

@Sjonbakker:

'tis niet omdat je op één forum http://www.circuitsonline.net/forum/view/96019 meerdere waarschuwingen krijgt, dat je die op een ander links mag laten liggen!

TOON INZET, lees! De site van arduino is zeer goed uitgewerkt, en je vindt er 1001 zaken op. Kom nog maar eens terug als je 10 ledjes kan laten flikkeren.

Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
kockie schreef op donderdag 16 juni 2011 @ 00:19:
Ik ben ook met een arduino aan het prutsen geslagen. Ik ben bezig met 1-wire temperatuur sensoren. Temperaturen worden uitgelezen en gecombineerd met sensor-id in een externe mysql database geschreven.

Nu kan ik meten tot 7 sensoren, maar daarboven verrekt ie het. Als ik bij het zoeken naar 1-wire sensoren de laatst toegevoegde eruit trek krijg ik een melding 146* sensoren gevonden.
Ik gebruik een "powered" systeem
Iemand een idee hoeveel sensoren er tegelijk uitgelezen kunnen worden?


* kan ook ander getal zijn
pak je toch meerdere pins op de arduino? maakt voor de werking weinig uit, je zult toch niet gaan uitlezen met grote snelheid (neem ik voor het gemak even aan :P )

Acties:
  • 0 Henk 'm!

  • DeKemp
  • Registratie: Maart 2007
  • Laatst online: 24-06 22:15
Weet iemand of output pins van de atmega beschadigt kunnen worden als er een spanning op word gezet? (per ongelijk 5volt opgezet.

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

DeKemp schreef op donderdag 16 juni 2011 @ 13:34:
Weet iemand of output pins van de atmega beschadigt kunnen worden als er een spanning op word gezet? (per ongelijk 5volt opgezet.
Kan, maar meestal gebeurt er weinig :X

Acties:
  • 0 Henk 'm!

  • Mescaline
  • Registratie: Oktober 2007
  • Laatst online: 10-09 23:38
DeKemp schreef op donderdag 16 juni 2011 @ 13:34:
Weet iemand of output pins van de atmega beschadigt kunnen worden als er een spanning op word gezet? (per ongelijk 5volt opgezet.
Zou niet moeten, tenzij je net de 3.3V te pakken hebt. Algemene pins kan normaal gezien 5V afhandelen aangezien ze input signals af moeten kunnen handelen.

Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
steffex schreef op donderdag 16 juni 2011 @ 13:28:
[...]


pak je toch meerdere pins op de arduino? maakt voor de werking weinig uit, je zult toch niet gaan uitlezen met grote snelheid (neem ik voor het gemak even aan :P )
Heb ik aan gedacht, maar dat maakt het weer noodzakelijk dat er meerdere kabels gelegd worden en dat wilde ik nu net niet...

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
nu arduino naar de site van Pachube.com of Exosite.com kan praten,
wil ik graag mijn eigen MySQL database (bij de provider) vullen met de meetgegevens (huidig vermogen, tijdstip/datum, max vermogen so far).

alleen... het aanmaken van een database en tabel lukt me wel,
maar hoe ik de arduino de data in deze database/tabel kan laden: beats me!
Heeft iemand bruikbare sourcecode als voorbeeld?
Ik heb al gezocht op google, maar nog niet echt iets bruikbaars gevonden
de provider kan ook overweg met php

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
Tenzij je via een ethernetshield de arduino op internet hebt aangesloten, zul je een scriptje op een server/pc/whatever de Serial uit moeten lezen en het dan vervolgens naar Pachube.com/Exosite.com sturen.

edit:

Heb je dit uberhaupt wel gezien: http://community.pachube.com/tutorials#arduino

[ Voor 19% gewijzigd door steffex op 16-06-2011 22:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben zelf ook een tijdje aan het spelen met me arduino kloon (freeduino) met een Atmega328.

Daar heb ik nu een nokia 6100 display op met pcf8833 chipset. Deze werkt nu.

Nu wil ik een (ipod)clickwheel erbij aansluiten om zo een AB te maken in de stijl van de philips moodlight. Maar ook om de Klikaan klikuit te bedienen.

Voor de clickwheel heb ik een progje gevonden maar deze is in C geschreven en mijn kennis van programeren is te klein om het progje om te schrijven.

De clickwheel.h file snap ik nog wel maar de clickwheel.c en de main.c is hocuspocus voor mij.
Mijn vermoeden is dat het clickwieltje een I2C master is en dat de arduino de slave moet zijn. Maar het display is ook een slave dus ik moet 2 I2C bussen op de arduino proggen.

De werking van het clickwieltje is dat hij 4 bytes verstuurt. In deze bytes staan de gegevens van de ingedrukte knop of de data van het wieltje. Maar hoe haal ik de bytes uit de i2c data?

Hier een stukje info wat ik gevonden heb:
Here some additional information for everybody how wants to use an iPod Clickwheel.

The Clickwheel is driven by an ASIC from Synaptics – it is called T1005.
After Reset the Chlickwheel is in AutoReporting mode which means, that it is sending information whenever a status-change happens. Such a change can be a position change on the wheel, pressing a key or releasing a key.

The Clickwheel always sends 32-bit information-packets via its SPI interface. High byte first, MSB first, leading edge of the clock.
To identify the packet just wait until the lowest byte has the value 0x1a. This is common to all packets.
The ClickWheel ist very sensitive so be carefull, because the single packets can contain position and keypress-informations at the same time. Just implement a kind of deadband to identify explicit the key presses.

Here the definition of the 32-bit packets:

Position change or keypress status with wheel contact:
0xc0 0xpp 0xkk 0x1a
0xpp: Position information (0×01..0x5f)
0xkk: Keypress information (0×01 Center,0×02 Forward, 0×04 Back, 0×08 Play, 0×10 Menu)
Be carefull: The clickwheel sends 0×00 for 0xkk when the key is released. This works not with the center button when you have no contact with the wheel area.

Key information with no wheel contact:
0×80 0xnn 0xkk 0x1a
0xnn: dont care
0xkk: see above
So for the center button this is the more important packet, cause you normaly do not touch the wheel while pressing. For the other keys this packet is being send when you press the keys for example with a pen. A 0×00 for 0xkk is also send, when you release a button.

So for simply recognizing the keypresses wait until the ClickWheel sends the 0×00. During that time ignore the other packets. You also can implement an autorepeat funktionality this way.
Dit is de clickwheel.h
#ifndef CLICKWHEEL_H
#define CLICKWHEEL_H
#endif

//clickwheel data lines
#define DATA_PORT PORTD
#define DATA_PIN PIND
#define CW_SDA_PIN 4
#define CW_SCL_PIN 3 //INT1
#define CW_SDA PIND & (1<<CW_SDA_PIN)
#define CW_SCL PIND & (1<<CW_SCL_PIN)
//#define CW_SCL_LOW ((PIND & _BV(7)))
//clickwheel packets
#define CW_CMD_P1 3 //first byte sent in packet
#define CW_BTN_CMD 2 //second byte sent in packet
#define CW_WHEEL_CMD 1 //second byte sent in packet
#define CW_CMD_P4 0 //second byte sent in packet

//clickwheel command ‘cmd’ formatting
#define CW_CMD_CW 0×80 //clockwise scroll event (used for ‘cmd’ stuffing only)
#define CW_CMD_CCW 0×40 //counter-clockwise scroll event (used for ‘cmd’ stuffing only)
#define CW_CMD_FLAG 0×20 //clickwheel new packet arrived flag
#define CW_CMD_PP 0×08 //clickwheel play >>|| pause button pressed
#define CW_CMD_MENU 0×10 //clickwheel menu button pressed
#define CW_CMD_BACK 0×04 //clickwheel back button pressed
#define CW_CMD_FORWARD 0×02 //clickwheel forward button pressed
#define CW_CMD_CBTN 0×01 //clickwheel center button pressed

#define CW_DEADBAND 7 //adjust the sensitivity/speed of the clickwheel. lower=more sensitive

//initialize interrupt and port
extern void uiinit(void);

//function return cmd byte following the clickwheel ‘cmd’ formatting defines
extern unsigned char uiaction(void);

//reset the ui action recieve buffer and cnd flag byte
//this function should be called after responding the the new action
extern void uireset(void);
clickwheel.c
#include “clickwheel.h”
#include “avr/interrupt.h”

volatile unsigned char cmd;
volatile char posn1, db_compare;
volatile union {
unsigned char byte[4];
unsigned long int word;
} cmd_packet;

ISR(INT1_vect) {
if (CW_SDA) {
cmd_packet.byte[0] |= 0×80;
}

if (((cmd_packet.byte[0] == 128) || (cmd_packet.byte[0] == 192)) && (cmd_packet.byte[3] == 26)) {
cmd = 0×20;
EIMSK &= ~(0×02);
}
else {

cmd_packet.byte[3] = (cmd_packet.byte[3]>>1);
cmd_packet.byte[3] |= (cmd_packet.byte[2]<<7);

cmd_packet.byte[2] = (cmd_packet.byte[2]>>1);
cmd_packet.byte[2] |= (cmd_packet.byte[1]<<7);

cmd_packet.byte[1] = (cmd_packet.byte[1]>>1);
cmd_packet.byte[1] |= (cmd_packet.byte[0]<<7);

cmd_packet.byte[0] = (cmd_packet.byte[0]>>1);
}
}

unsigned char uiaction(void) {
if (cmd == CW_CMD_FLAG ) {

if(cmd_packet.byte[CW_BTN_CMD] != 0){
cmd = cmd_packet.byte[2];
return;
}
else{
if (cmd_packet.byte[CW_WHEEL_CMD] > posn1) {
while (db_compare > CW_DEADBAND) {
cmd = CW_CMD_CW;
db_compare = CW_DEADBAND / 2;
break;
}
db_compare += 1;
}
if (cmd_packet.byte[CW_WHEEL_CMD] < posn1) {
while (db_compare <= 0) {
cmd = CW_CMD_CCW;
db_compare = CW_DEADBAND / 2;
break;
}
db_compare -= 1;
}
posn1 = cmd_packet.byte[CW_WHEEL_CMD];

}
cmd &= ~CW_CMD_FLAG;
cmd_packet.word = 0×00000000;
}
EIMSK |= 0×02;
return cmd;
}

void uiinit() {
//initialize clickwheel port as
DATA_PORT |= (1<<CW_SDA_PIN) | (1<<CW_SCL_PIN);

//configure INT1_vect and pins for sampling clickwheel data transmissions
//on rising edges of the clock
EICRA = 0x0C; //sets for rising edge interrupt on INT1
EIMSK = 0×02; //enable interrupts on port INT1
sei();
}

void uireset() {
cmd_packet.word = 0×00000000;
cmd = 0;
}
en tenslotte de main.c
#include “stdlib.h”
#include “avr/io.h”
#include “lcd.h”
#include “clickwheel.h”

#define F_CPU 8000000UL // 8 MHz

void main(void) {

char buffer[32];
int count;

uiinit();
lcd_init(LCD_DISP_ON);

for(;;) {

//check to see if a new command has been recieved and process command
//and print appropriate button response

switch(uiaction()) {
case CW_CMD_CW:
lcd_gotoxy(0,0);
lcd_puts(“clockwise “);
count = count + 10;
utoa(count, buffer, 10);
lcd_gotoxy(6,1);
lcd_puts(buffer);
lcd_puts(“ “);
uireset();
break;
case CW_CMD_CCW:
lcd_gotoxy(0,0);
lcd_puts(“counterclockwise”);
count = count – 10;
utoa(count, buffer, 10);
lcd_gotoxy(6,1);
lcd_puts(buffer);
lcd_puts(“ “);
uireset();
break;
case CW_CMD_PP:
lcd_gotoxy(0,0);
lcd_puts(“play/pause “);

uireset();
break;
case CW_CMD_MENU:
lcd_gotoxy(0,0);
lcd_puts(“menu “);
uireset();
break;
case CW_CMD_BACK:
lcd_gotoxy(0,0);
lcd_puts(“back “);
count –;
utoa(count, buffer, 10);
lcd_gotoxy(6,1);
lcd_puts(buffer);
lcd_puts(“ “);
uireset();
break;
case CW_CMD_FORWARD:
lcd_gotoxy(0,0);
lcd_puts(“forward “);
count ++;
utoa(count, buffer, 10);
lcd_gotoxy(6,1);
lcd_puts(buffer);
lcd_puts(“ “);
uireset();
break;
case CW_CMD_CBTN:
lcd_gotoxy(0,0);
lcd_puts(“center button “);
uireset();
count = 0;
break;
default:
1;
}

}
}
Bij de clickwheel.c gaat het al fout.

Bij deze regel geeft hij al een fout melding :
cmd_packet.byte[3] = (cmd_packet.byte[3]>>1);
Wat er staat snap ik wel maar niet hoe je dit om kan zetten naar arduino code. Arduino begrijpt volgens mij niet wat cmd_packet.byte[3] inhoudt.

Als ik de i2c data in de seriele monitor kan krijgen ben ik al een stuk verder en hoop dat ik door jullie wat op weg geholpen kan worden.

Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
NielsTn schreef op donderdag 16 juni 2011 @ 22:41:
nu arduino naar de site van Pachube.com of Exosite.com kan praten,
wil ik graag mijn eigen MySQL database (bij de provider) vullen met de meetgegevens (huidig vermogen, tijdstip/datum, max vermogen so far).
Ik heb een vergelijkbaar script, maar dan voor temperatuur die naar m'n eigen server logt. Dat doet ie op ip en niet op url! Misschien kun je er iets mee...

Code is erg dirty, ik ben geen programmeur, maar een net beginnende arduino prutser:

Code in arduino
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#include <Ethernet.h>           //library for ethernet functions
#include <Client.h>             //library for client functions
#include <DallasTemperature.h>  //library for temperature sensors
#include <OneWire.h>            //library for the onewire bus
#include <SPI.h>

#define ONE_WIRE_BUS     8        //the onewire bus is connected to pin 7 on arduino
#define TEMPERATURE_PRECISION  10 //resolution of the sensors is set to 10bit(somehow won´t work)

// Ethernet settings
uint8_t hwaddr[6] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xBE}; // mac-adress of arduino
uint8_t ipaddr[4] = {
  192, 168, 0, 177};                    // IP-adress of arduino
uint8_t gwaddr[4] = {
  192, 168, 0, 254};                     // IP-adress of gateway ( for later DNS implementation)
uint8_t subnet[4] = {
  255, 255, 255, 0};                   // subnetmask           ( for later DNS implementation)
uint8_t serverip[4] = {
  192, 168, 0, 1};                   // IP-adress of server arduino sends data to
uint8_t serverport = 80;                                  // the port the arduino talks to

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address
Client client(serverip, serverport);         // make a new instance from type "Client" named "client", giving it
// serverip and serverport

OneWire oneWire(ONE_WIRE_BUS);               // setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire);         // Pass our oneWire reference to Dallas Temperature
// variable to store the number of sensors
bool connected = false;                                   // yes-no variable (boolean) to store if the arduino is connected to the server
int i = 0;                                                // variable to count the sendings to the server
//---------------------------------------------------------------------------------------------

void setup(void)                                  // setup-function (runs only at the startup of the arduino)
{
  Serial.begin(9600);                               // start the serial port
  Serial.println("I2C-to-Ethernet Bridge.");
  Serial.println("Initializing Ethernet.");

  Ethernet. begin(hwaddr, ipaddr);                  // start up ethernet
  sensors.begin();                                  // start up the library
  int numSensors = sensors.getDeviceCount();        // store the number of sensors to the variable numSensors,
  int temparray[numSensors];                        // array with "numSensors" storage places for the temperature of each sensor
                                                    // "sensors.getDeviceCount" is a function in the library
 // int idarray[numSensors];                                      

  Serial.println("Enumerating and scanning for I2C sensors.");

  if(numSensors > 0)                      // if there is at least one sensor:
  {
    Serial.print("Er zijn  ");            //print the number of sensors to serial port
    Serial.print(numSensors);
    Serial.println( " sensoren gevonden.");
    //Serial.println(deviceaddress);
   // printAddress(deviceAddress);
  }
  else                                      //if there is no sensor:
  {
    Serial.println("Geen sensoren gevonden."); // tell the serial port
  }

}


//----------------------------------------------------------------------------------------------------------






void loop(void)                     // loop function (runs over and over again)
{
  int numSensors = sensors.getDeviceCount();
  double temparray[numSensors];          // array with "numSensors" storage places for the temperature of each sensor
                                        // "sensors.getDeviceCount" is a function in the dallas temperature library

 for(i=0; i<numSensors; i++)         // as long as "i" ( chosen number, starts at 0) is smaller than
                                        //numSensors" (number of sensors) do the "for" cycle
    {
      double temp = sensors.getTempCByIndex(i); // take temperature reading from sensor "i" and store it to the variable "temp"
      temparray[i] = temp;                   // store the temperature from sensor i to storage place i in the array

    }



  if (client.connect())
  {                                   // if connected, set variable connected to "true" and
    connected = true;
    sensors.requestTemperatures();      // send the request for temperature to sensors (all sensors)
    delay(300);
   
   
    for (i=0; i<numSensors; i++)
    {

      // Search the wire for address
     if(sensors.getAddress(tempDeviceAddress, i))
      client.print("GET /arduino/arduino2.php?");
      Serial.print("GET /arduino/arduino2.php?");
      client.print("t0");
      Serial.print("t0");
      client.print("=");
      Serial.print("=");
     printAddress(tempDeviceAddress);
     clientPrintAddress(tempDeviceAddress);
      client.print("&");
      Serial.print("&");
      client.print("t1");
      Serial.print("t1");
      client.print("=");
      Serial.print("=");
      client.print(temparray[i]);
      Serial.print(temparray[i]);
      //if (i < numSensors-1)
      //{
      //client.print("&&");
      //Serial.print("&&");
      //}

      //else
      //{
      //}
      

     client.println(" HTTP/1.1");
      Serial.println(" HTTP/1.1");
      client.println("Host: kockiesrv01");
      Serial.println("Host: kockiesrv01");
      client.println("User-Agent: Arduino");
      Serial.println("User-Agent: Arduino");
      client.println("Accept: text/html");
      Serial.println("Accept: text/html");
    // client.println("Connection: close");
   //  Serial.println("Connection: close");
     client.println(" Connection: Keep-Alive");
      client.println();
      Serial.println();
      //Serial.print("einde loop");
     // client.println("dit is fout");
     //connected = false;
        }
  }
  else
  {
    Serial.println("Cannot connect to Server");         //  else block if the server connection fails (debugging)
  }

  Serial.println();
  client.stop();                                              //  stop the connection and set
  connected = false;                                          //  "connected" to false
  delay(120000);
}
// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 10; i++)
  {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);

  }
}
void clientPrintAddress(DeviceAddress deviceAddress)
 {
   for (uint8_t i = 0; i < 10; i++)
{
 if (deviceAddress[i] < 16) client.print("0");
client.print(deviceAddress[i], HEX);
 }
 }


arduino2.php (op server)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

header('Content-type: text/plain');

echo date("d.m.Y-H:i:s") . " Temperatur 1 = " . $_GET['t0'];

echo date("d.m.Y-H:i:s") . " Temperatur 2 = " . $_GET['t1'];

echo date("d.m.Y-H:i:s") . " Temperatur 3 = " . $_GET['t2'];

echo date("d.m.Y-H:i:s") . " Temperatur 4 = " . $_GET['t3'];

echo date("d.m.Y-H:i:s") . " Temperatur 5 = " . $_GET['t4'];



$link = mysql_connect("localhost", "arduino", "arduino") or die("Mysql verbinding niet mogelijk: " . mysql_error());

mysql_select_db("arduinotest2") or die("kan niet met database verbinden");

$query = "INSERT INTO digitemp(SerialNumber, fahrenheit) VALUES ('" . $_GET['t0'] . "', '" . $_GET['t1'] ."')";

$result = mysql_query($query) or die("Helaas, mislukt: " . mysql_error());



mysql_close($link);

?>


Disclaimer, deze code is gejat en verbouwd. Ik ben zoals je ziet geen programmeur en heb ook niet de intentie om dat te worden. Opbouwende kritiek is meer dan welkom 8)

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • Mars Warrior
  • Registratie: Oktober 2003
  • Laatst online: 16:15

Mars Warrior

Earth, the final frontier

kockie schreef op donderdag 16 juni 2011 @ 00:19:
Ik ben ook met een arduino aan het prutsen geslagen. Ik ben bezig met 1-wire temperatuur sensoren. Temperaturen worden uitgelezen en gecombineerd met sensor-id in een externe mysql database geschreven.

Nu kan ik meten tot 7 sensoren, maar daarboven verrekt ie het. Als ik bij het zoeken naar 1-wire sensoren de laatst toegevoegde eruit trek krijg ik een melding 146* sensoren gevonden.
Ik gebruik een "powered" systeem
Iemand een idee hoeveel sensoren er tegelijk uitgelezen kunnen worden?
* kan ook ander getal zijn
Wat voor weerstand heb je tussen de bus en de plus zitten?
Als je netwerk langer wordt zul je deze weerstand kleiner moeten gaan nemen: zeg 2k ipv 4k7 of zelfs nog kleiner.

Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs


Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
Ik had een (samengestelde weerstand) van 4,6kOhm, 2,2 heb ik oog geprobeerd, maar helaas geen succes...

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • Mars Warrior
  • Registratie: Oktober 2003
  • Laatst online: 16:15

Mars Warrior

Earth, the final frontier

kockie schreef op vrijdag 17 juni 2011 @ 13:35:
Ik had een (samengestelde weerstand) van 4,6kOhm, 2,2 heb ik oog geprobeerd, maar helaas geen succes...
De Arduino datasheet geeft een minimum aan van 1k6 meen ik. Ik heb zelf een netwerkje gehad met 12 sensoren en daar moest ik er twee parallel zetten (dus 800ohm) om eea betrouwbaar te laten werken...

Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Welke sensors probeer je aan te sluiten en welke code heb je geschreven daarvoor?

1-wire componenten hebben een uniek 64bit adres vanuit de fabriek, in principe kan je dus van 1 tot oneindig aansluiten, probleem zit hem denk ik in de software, maar zonder verder info is dat alleen een vermoeden. Staat overigens allemaal in de datasheet van de componenten, die moet je eerst doorlezen voordat je überhaupt dat ding gaat kopen of aansluiten. Daar staat 9 van de 10 keer het antwoord. ;)

Edit/
4.7K is wat het 1-wire protocol voorschrijft als pullup, en we houden ons graag aan het protocol. Ook arduino houd zich daaraan en geeft netjes 4.7k in hun tutorial als pull-up. Al luister dat meestal niet zo nauw is maar dat de lijn in high state blijft als de 1-wire componenten condensators opladen en lijn niet laag word getrokken.

Edit/
Vergis me, DS18xx heeft als pullup 4.7k.

1-wire heeft 2k t/m 10k als pull up bij gewone aansluiting en bij parasitic zelfs nog lager.

[ Voor 34% gewijzigd door mad_max234 op 17-06-2011 14:34 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Mars Warrior
  • Registratie: Oktober 2003
  • Laatst online: 16:15

Mars Warrior

Earth, the final frontier

Anders ff hier kijken: http://www.maxim-ic.com/app-notes/index.mvp/id/148

Staat een heel stuk in over betrouwbare 1-Wire netwerken en alles wat daar bij kan komen kijken...

Verder zitten er in de OneWire lib wat fouten. Paul heeft een nieuwe versie gemaakt, http://www.pjrc.com/teensy/td_libs_OneWire.html, die die fouten (bij oa het zoeken) fixed.

[ Voor 33% gewijzigd door Mars Warrior op 17-06-2011 14:51 ]

Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs


Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
Verwijderd schreef op vrijdag 17 juni 2011 @ 02:21:
Ik ben zelf ook een tijdje aan het spelen met me arduino kloon (freeduino) met een Atmega328.

Daar heb ik nu een nokia 6100 display op met pcf8833 chipset. Deze werkt nu.

Nu wil ik een (ipod)clickwheel erbij aansluiten om zo een AB te maken in de stijl van de philips moodlight. Maar ook om de Klikaan klikuit te bedienen.

Voor de clickwheel heb ik een progje gevonden maar deze is in C geschreven en mijn kennis van programeren is te klein om het progje om te schrijven.

De clickwheel.h file snap ik nog wel maar de clickwheel.c en de main.c is hocuspocus voor mij.
Mijn vermoeden is dat het clickwieltje een I2C master is en dat de arduino de slave moet zijn. Maar het display is ook een slave dus ik moet 2 I2C bussen op de arduino proggen.

De werking van het clickwieltje is dat hij 4 bytes verstuurt. In deze bytes staan de gegevens van de ingedrukte knop of de data van het wieltje. Maar hoe haal ik de bytes uit de i2c data?
[knip]
Ga eerst even je datasheet doorlezen, met vermoedens kom je natuurlijk nergens... Een arduino of kloon kan prima overweg met C code! Je mist waarschijnlijk libraries o.i.d.

Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
mad_max234 schreef op vrijdag 17 juni 2011 @ 14:20:
Welke sensors probeer je aan te sluiten en welke code heb je geschreven daarvoor?
Code staat hierboven in mijn post.
Ik heb een aantal ds1820 en een aantal ds18b20 aangesloten. Alles zit nog op een breadboard, dus van lange draden is geen sprake. De sensoren had ik al liggen. Ik heb al een parasitic network van 10 sensoren met een lengte van ca 100meter. Deze draait via de seriele poort van een nagasaki (die debian draait). Werkt goed, nauwelijks fouten.

[ Voor 5% gewijzigd door kockie op 17-06-2011 16:08 . Reden: link ingevoegd naar code ]

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Maar hoe heb je ze nu aangesloten, parasitic of niet?

En anders toch maar een nog kleinere weerstand gebruiken om dat toch geheel uit te sluiten, je weet maar nooit.

Edit/
Ja vertrouw nooit 100% libs, jij bent niet de enige die geen programmeur is, sterker nog meer en deel van de arduino gebruikers zullen geen programmeurs zijn, maar die produceren vaak wel libs die ze rond verspreiden, met berg fouten erin. Zeg niet dat jou probleem daardoor komt maar moet ook altijd even de lib nakijken en kijken wat daar gebeurt.

Efficiëntie is vaak ook ver te zoeken, maar goed dat is weer een andere verhaal. :)

[ Voor 109% gewijzigd door mad_max234 op 17-06-2011 16:55 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • kockie
  • Registratie: November 2000
  • Laatst online: 10-09 18:25
Mars Warrior schreef op vrijdag 17 juni 2011 @ 14:49:
Verder zitten er in de OneWire lib wat fouten. Paul heeft een nieuwe versie gemaakt, http://www.pjrc.com/teensy/td_libs_OneWire.html, die die fouten (bij oa het zoeken) fixed.
code:
1
2
3
4
I2C-to-Ethernet Bridge.
Initializing Ethernet.
Enumerating and scanning for I2C sensors.
Er zijn  14 sensoren gevonden.


Die nieuwe library laat er al een stuk meer zien. Bedankt voor de tip! Heb er niet meer om te testen, maar dit gaat er al aardig op lijken!

Iedereen bedankt voor het meedenken en voor het niet afbranden van "mijn" code!

Interesse in hout stoken, duurzame energie, kachels etc? --> Ecologieforum
Interesse in Kockie --> Kockie.nl


Acties:
  • 0 Henk 'm!

  • Mars Warrior
  • Registratie: Oktober 2003
  • Laatst online: 16:15

Mars Warrior

Earth, the final frontier

kockie schreef op vrijdag 17 juni 2011 @ 23:37:
[...]
Die nieuwe library laat er al een stuk meer zien. Bedankt voor de tip! Heb er niet meer om te testen, maar dit gaat er al aardig op lijken!
Je ziet nu dus alle sensoren. Da's mooi!
Dit is vaak het probleem van internet: foute software blijft erg lang rondwaren...
Iedereen bedankt voor het meedenken en voor het niet afbranden van "mijn" code!
Geen dank. Enne, de tip koste minder tijd dan het afbranden van je code >:)

Duurde alleen ff voordat ik me bedacht dat je wel eens de oude library zou kunnen gebruiken...Je wil niet weten hoeveel tijd het mij heeft gekost voordat ik een string van die sensoren had werken en maar dacht dat het aan mijn soldeerkunsten lag, terwijl de buggy software dus de oorzaak bleek te zijn!

Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs


Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
tip: vandaag heeft Pachube.com zijn website aangepast. Best wel strak(ker) geworden. Dus als je arduino iets met pachube doet: even checken! :)

zoiets dus

[ Voor 16% gewijzigd door NielsTn op 22-06-2011 14:22 ]

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Ik heb gisteren een Arduino MEGA2560 ( ATMEGA2560 ) besteld. Ik heb nog nooit gewerkt met een micro controller. maar het lijkt me erg leuk om wat van te leren. eerst rustig aan beginnen met een ledje te laten knipperen etc. als ik dan hier lees wat jullie allemaal maken..petje af!

Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
Inmiddels opgelost, de arduino spuwt de mySql database vol :)
nu verder snuffelen hoe ik zelf de grafiekjes kan publiceren (dus niet afhankelijk ben van Pachube).

[ Voor 91% gewijzigd door NielsTn op 28-06-2011 17:20 ]

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

Verwijderd

Hoi :)

Ik ben inmiddels ook een beetje met mn arduinotje aan het knoeien. Nu kom ik een probleempje tegen. Ik heb een goedkoop encodertje nu lees ik deze uit op de seriele poort met de voorbeeld sketch op de arduino site. Als ik aan de encoder draai telt deze niet mooi, soms telt hij een terug of slaat een puls over oid.
Anyhow ik heb al diverse sketches geprobeerd maar ik blijf deze rare telfouten houden, maar ook bij een zelfde 2e encoder. Zou dit aan de goedkope encoders liggen of aan de arduino?
Is het uberhaupt mogelijk om goed encoders uit te lezen met een arduino? Ik ben van plan om namelijk in de toekomst een 2500ppr encoder te monteren daar ik een digitale uitlezing wil maken en dus geen pulsen missen kan/mag.

Wat zeggen de experts er van?

Acties:
  • 0 Henk 'm!

  • soepah
  • Registratie: December 2006
  • Laatst online: 08:49
met welke snelheid lees je de encoder uit? (Doe je ook sleeps tussen door? of is het een
code:
1
2
3
4
5
while(1)
{
  value = readdigital(pin1);
//doe iets (maar niet te veel want dan duurt het te lang)
}

indien je dan pulsen mist en hij gaat soms achteruit naar je idee, dan is je arduino niet snel genoeg?
hang anders eens een scope aan je encodertje en kijk welk signaaltje er af komt. bij mij wel eens gehad dat ik beter met een analoge poort kon meten dan digitaal, en dan na enige calibraties de waarden bepalen om pulsen te tellen.

wie van vissen houdt, houdt niet van vissen


Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Ik zou zeggen doe dat pulsen lezen mooi op een interrupt :Y

Acties:
  • 0 Henk 'm!

  • soepah
  • Registratie: December 2006
  • Laatst online: 08:49
Rmg schreef op donderdag 30 juni 2011 @ 09:19:
Ik zou zeggen doe dat pulsen lezen mooi op een interrupt :Y
dat is nog beter
(zie bv http://gonium.net/md/2006...-interrupts-with-arduino/)

Maar hang er zowiezo ff een scoop aan, en je ziet welk signaal je kunt verwachten.

wie van vissen houdt, houdt niet van vissen


Acties:
  • 0 Henk 'm!

Verwijderd

Ik neem vandaag even een encoder mee naar het werk en hang 'm dan aan de scoop, misschien dat deze geen mooie flank heeft ofzo.
De encoder is aangesloten op pin 2 en 3. De common pin zit met een 470ohm naar de gnd. Ik draai er met de hand rustig aan, dus qua snelheid zou de arduino heb moeten kunnen bijbenen. Als het goed is zitten er intterupts in de code. Deze code heb ik nu gebruikt;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
enum PinAssignments {
  encoderPinA = 2,
  encoderPinB = 3,
  clearButton = 8
};

volatile unsigned int encoderPos = 0;
unsigned int lastReportedPos = 1;

boolean A_set = false;
boolean B_set = false;


void setup() {

  pinMode(encoderPinA, INPUT); 
  pinMode(encoderPinB, INPUT); 
  pinMode(clearButton, INPUT);
  digitalWrite(encoderPinA, HIGH);  // turn on pullup resistor
  digitalWrite(encoderPinB, HIGH);  // turn on pullup resistor
  digitalWrite(clearButton, HIGH);

// encoder pin on interrupt 0 (pin 2)
  attachInterrupt(0, doEncoderA, CHANGE);
// encoder pin on interrupt 1 (pin 3)
  attachInterrupt(1, doEncoderB, CHANGE);

  Serial.begin(9600);
}


void loop(){ 
  if (lastReportedPos != encoderPos) {
    Serial.print("Index:");
    Serial.print(encoderPos, DEC);
    Serial.println();
    lastReportedPos = encoderPos;
  }
  if (digitalRead(clearButton) == LOW)  {
    encoderPos = 0;
  }
}

// Interrupt on A changing state
void doEncoderA(){
  // Test transition
  A_set = digitalRead(encoderPinA) == HIGH;
  // and adjust counter + if A leads B
  encoderPos += (A_set != B_set) ? +1 : -1;
}

// Interrupt on B changing state
void doEncoderB(){
  // Test transition
  B_set = digitalRead(encoderPinB) == HIGH;
  // and adjust counter + if B follows A
  encoderPos += (A_set == B_set) ? +1 : -1;
}



Dit krijg ik bijvoorbeeld bij een kant op draaien op de serial monitor.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Index:2
Index:1
Index:2
Index:3
Index:2
Index:4
Index:5
Index:6
Index:7
Index:9
Index:65535
Index:0
Index:3
Index:5
Index:6
Index:7

Acties:
  • 0 Henk 'm!

  • harold65
  • Registratie: Mei 2009
  • Laatst online: 25-12-2022

harold65

Slimme meter:

Verwijderd schreef op donderdag 30 juni 2011 @ 12:47:
De common pin zit met een 470ohm naar de gnd.
Heb je een reden waarom je de common niet direct op de GND aansluit?
Je schakelt nu de input, die via een pullup aan 5V hangt, via 470 ohm naar GND. De arduino ziet een signaal pas als 'laag' als de spanning onder de ca. 0.8V komt.

Hang de common eens direct aan GND en probeer het nog eens.
De code is goed en moet dit makkelijk aankunnen.

Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Nu had ik een paar posts terug gepost dat mijn spulletjes besteld waren. Nu wil ik ook nog een Accelerometer module bestellen. Dit wil ik gebruiken om een servo motor aan te sturen. Ik rij namelijk motor en neem wel is een camera'tje mee. nu wil ik een gyro cam maken. Camera op een plateau, en die vast aan de servo. Nu heb je best wat verschillende Accelerometers. Hebben jullie ervaring met een bepaald type? Hij moet opzich wel aardig wat kracht aankunnen (Boven de 3G). Maar ik had al gelezen dat je veel meters verschillend kan instellen omtrent G kracht.

Is dit misschien wat? http://cgi.ebay.nl/MMA726...for-Arduino-/250846248227

[ Voor 17% gewijzigd door Dacuuu op 30-06-2011 19:18 ]


Acties:
  • 0 Henk 'm!

  • TNW
  • Registratie: Januari 2007
  • Laatst online: 09-09 14:01

TNW

Vraagje dat misschien voor meerdere mensen interessant is:

Waar in NL kan je mooie behuizingen met ruimte voor een 16x2 led display en (4xAA) batterijen bestellen om je Arduino projectjes in te bouwen?
Ik heb 2 opzetjes (een broedmachine en en geigerteller) welke ik in een nette behuizing wil inbouwen maar de standaardbehuizingen betekenen irritant zaagwerk voor de lcd en geen net batterijvak.

Iemand een idee?

Weblog | Straling!


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Ik heb deze gekocht: MMA7361 Triple Axis Accelerometer Module for Arduino

Ik hoop dat het een beetje de goede is..

Acties:
  • 0 Henk 'm!

Verwijderd

@Harold65;

Ook met de pin rechtstreeks aan de gnd helaas niet het gewenste resultaat.

Heb vandaag op de scoop gekeken voor zover dat lukte, weer alles digitaal op dat ding.... 8)7 Maar goed ik zag dus aan de afgaande flank, dat die sowieso niet zo goed is. Deze loopt in een parabool vorm.

Dus ik verdenk de encoders van slechte kwaliteit.


To be continued.......

Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
het is gelukt, de Arduino spuugt nu het actueel vermogen (in Watt) en de opbrengst (in Watt-uur) in mijn eigen MySQL database :)

hier een foto van de grafische weergave via Google Visualizations:

http://www.flickr.com/photos/64753348@N03/5897148668/

on second thought: ik opteer toch voor ZonPHP te gebruiken...
echter, die leest een .CSV bestand in (met daarin huidig vermogen).
hoe ik die kan creeeren/vullen is nog even een groot vaag gebied....

[ Voor 28% gewijzigd door NielsTn op 04-07-2011 10:39 ]

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • Mitchelll010
  • Registratie: Oktober 2002
  • Laatst online: 20:05
Hallo mensen kan iemand mij helpen... ik ben net begonnen met de arduino ( en programmeren in het algemeen ) maar ik wil iets maken wat eigenlijk te moeilijk is voor mij dus ik hoop dat jullie mij kunnen helpen.

Het probleem : Ik heb in mijn auto een car-pc, een alpine autoradio en stuurbediening.

Nu heb ik laatst een mooie converter gekocht zodat mijn originele stuurbediening aangesloten kan worden op de alpine radio.

Zoiets Afbeeldingslocatie: http://www.acr-helmond.nl/shop/components/com_virtuemart/shop_image/product/Stuurwiel_Interf_4db052b3c7972.jpg

De jackplug gaat in de remote ingang van de radio en dit werkt naar behoren.

Nu het probleem : Ik wil met dezelfde interface die dus nu enkel op de radio aangesloten staat ook mijn carputer bedienen, dus volume, next track enz.

Nu heb ik een heel mooi topic gevonden waarin iemand de commando's met een scoop heeft uitgelezen :Klik!

De commando's bestaan dus uit een serie hoog/laag signalen :

Afbeeldingslocatie: http://www.mp3car.com/vbulletin/imagehosting/1380334a10ad30c327c.jpg

Vol Up 110101111101101110101011110110111101011011010101
Vol Dn 110101111101101110101011011011011111011011010101
Mute 110101111101101110101011101011011110111011010101
Pst up 110101111101101110101011101010111110111101010101
Pst dn 110101111101101110101011010101011111111101010101
Source 110101111101101110101011101101111101101101010101
Trk up 110101111101101110101011101110111101101011010101
Trk dn 110101111101101110101011010111011111101011010101
Power 110101111101101110101011011101111110101101010101
Ent/Play 110101111101101110101011010101111111110101010101
Band/prog 110101111101101110101011011010111111011101010101


De vraag is nu, Hoe ga ik dit met een arduino uitlezen ? Het is ook erg lastig omdat het met timing te maken heeft.. Nu is dit denk ik met uitlezen niet zozeer van belang als dat je zelf de signalen uitstuurt naar de radio maar toch.

Als ik dus kan uitlezen wanneer en welke stuurknop er ingedrukt is kan ik daarna een evt gesloopte media center remote aanpassen en zo de car-pc bedienen.

Ik heb geen id waar te beginnen ..
Alvast bedankt

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

MaChOmIdGeT schreef op maandag 04 juli 2011 @ 21:36:
...
Vol Up 110101111101101110101011110110111101011011010101
...
Na een korte zoektocht kwam ik uit op een pagina waar dit reeds is geïmplementeerd. Wellicht zou je dit als referentie/implementatie kunnen gebruiken?

Ook zou je in de richting van interrupts kunnen zoeken. Interrupts zorgen ervoor dat, in dit geval, de arduino een functie/methode kan uitvoeren wanneer er een verandering in het signaal wordt ondervonden. Misschien is dit te snel voor een arduino, maar dat laat ik aan jou over om te controleren. :)

Acties:
  • 0 Henk 'm!

  • Mitchelll010
  • Registratie: Oktober 2002
  • Laatst online: 20:05
Feanathiel schreef op maandag 04 juli 2011 @ 22:45:
[...]


Na een korte zoektocht kwam ik uit op een pagina waar dit reeds is geïmplementeerd. Wellicht zou je dit als referentie/implementatie kunnen gebruiken?

Ook zou je in de richting van interrupts kunnen zoeken. Interrupts zorgen ervoor dat, in dit geval, de arduino een functie/methode kan uitvoeren wanneer er een verandering in het signaal wordt ondervonden. Misschien is dit te snel voor een arduino, maar dat laat ik aan jou over om te controleren. :)
No way ... _/-\o_ Held..

een poolse site :D

Ik had dus echt niet verwacht dat er iemand zou zijn met hetzelfde probleem/idee

Thnx !! ga ff de code bekijken

Acties:
  • 0 Henk 'm!

  • NielsTn
  • Registratie: December 2006
  • Laatst online: 11-09 15:21
Ik heb nu een LCD-display wat ik correct kan aansturen met de voorbeelden (en em ook in de toepassing ingebouwd qua software).
Heeft iemand echter ervaringen en/of voorbeelden waarin zowel de Arduino (Uno), het ethernetshield alsmede een LCD-display (16x2) zijn ingebouwd?

Ik zoek nog naar een passende behuizing, en de systeemkast van ethernetshield + arduino lijkt mij gewoon veel te klein. Merk/model/naam/leverancier info is ook welkom (ik heb al gegoogled en o.a. display.nl gekeken maar... nog niets gespot).

Tesla Model 3 LR DualMotor - AP & FSD | 4800Wp solar panels | 11.4GJ thermal solar panels


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Ik had hier een post staan met allerlei vragen, inmiddels al weer een hoop geleerd.
Nu heb ik deze code overgetypt uit een tutorial, maar snap nog niet alles.

Eerst de schskelaar en de led defineren, erna 3 booleans creëren .en erna wordt het soms wel een beetje moeilijk..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int switchPin = 2;
int ledPin = 13;
boolean lastButton = HIGH;
boolean currentButton = HIGH;
boolean ledOn = false;

void setup() 
{                
  pinMode(switchPin, INPUT);    
  pinMode(ledPin, OUTPUT) ;
}

boolean debounce(boolean last)
{
  boolean current = digitalRead(switchPin);
  if (last != current)
  {
    delay(50);
    current = digitalRead(switchPin);
  }
  return current;
}

void loop() 
{
  currentButton  = debounce(lastButton);
  if (lastButton == LOW  &&  currentButton == HIGH)
{
  ledOn = !ledOn;

}
  lastButton = currentButton;

   digitalWrite(ledPin, ledOn);

}

[ Voor 97% gewijzigd door Dacuuu op 11-07-2011 19:54 ]


Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Laatst online: 20:07
Dacuuu schreef op maandag 11 juli 2011 @ 18:06:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Pinnen definieren
int switchPin = 2;
int ledPin = 13;

boolean lastButton = HIGH;
boolean currentButton = HIGH;
boolean ledOn = false;

void setup()
{
    // switchpin als input instellen, led als output
    pinMode(switchPin, INPUT);
    pinMode(ledPin, OUTPUT) ;
}

boolean debounce(boolean last)
{
    // Switchpin uitlezen, en de waarde in current stoppen. (true of false (1 of 0))
    boolean current = digitalRead(switchPin);
    
    //voer uit wanneer de laatste waarde van de switch, NIET hetzelfde is als de hierboven uitgelezen waarde
    if (last != current)
    {
        // wacht 50ms
        delay(50);
        
        // Switchpin uitlezen, en de waarde in current stoppen. (true of false (1 of 0))
        current = digitalRead(switchPin);
    }
    
    // waarde uit current terugsturen
    return current;
}

void loop()
{
    // huidige status van de knop opvragen via de debounce functie, als parameter de laatste status meegeven
    currentButton  = debounce(lastButton);
    
    // Uitvoeren als de knop tijdens de laatste check niet ingedrukt was, en nu wel
    if (lastButton == LOW  &&  currentButton == HIGH)
    {
        // Led status togglen (als hij 1 is wordt hij 0, 0 wordt 1)
        ledOn = !ledOn;
        
    }
    // De waarde van de laatste knopcheck wegschrijven in lastButton, voor de volgende check
    lastButton = currentButton;
    
    // Led updaten met eventueel hierboven veranderde waarde
    digitalWrite(ledPin, ledOn);
}
Zo duidelijker? :)

Acties:
  • 0 Henk 'm!

  • Felyrion
  • Registratie: November 2001
  • Laatst online: 11-09 19:51

Felyrion

goodgoan!

Even als toevoeging: Debouncen is het opvangen van "ruis" bij je schakelaar. Zo vang je bijvoorbeeld minieme trillingen in je vingertop op, die anders als meerdere clicks geregistreerd zou worden, terwijl je maar één keer wou drukken.
Ook bij mechanische schakelaars zal het contact eerst een paar keer "stuiteren" voor er definitief contact gemaakt wordt.

In dit voorbeeld wordt gekeken of de switch gedurende 50ms veranderd is, en alleen dan zal hij de LED schakelen. Zo niet, dan blijft de LED onveranderd.

In het nederlands heet dat denderen

[ Voor 21% gewijzigd door Felyrion op 12-07-2011 07:05 ]

sleep: a completely inadequate substitute for caffeine


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
@CrashOverDrive; Al een stukje duidelijker! Het zelf zo schrijven lukt me nog niet, maar het lezen lukt nu een stukje beter. Dus op regel 22 "if (last != current)" Dan is 'last' dus een algemeen arduino commando. Ik zal al te denken, je hebt hem niet gefineerd, maar dat hoeft natuurlijk niet als het een standaard commando is.

@Felyrion: Dat wist ik ja, dat laat die jongen ook zien in de tutorial. en zelf had er ook last van, dat de schakelaar soms niet goed werkte zonder de debounce. Debounce is dus ook een standaard arduino commando.

Acties:
  • 0 Henk 'm!

  • Springuin
  • Registratie: Juli 2002
  • Laatst online: 11-09 20:13
Dacuuu schreef op dinsdag 12 juli 2011 @ 09:01:
Dan is 'last' dus een algemeen arduino commando. Ik zal al te denken, je hebt hem niet gefineerd, maar dat hoeft natuurlijk niet als het een standaard commando is.
Nee, last is een parameter van die functie:
code:
1
boolean debounce(boolean last)

De code die verderop staat:
code:
1
2
// huidige status van de knop opvragen via de debounce functie, als parameter de laatste status meegeven
    currentButton  = debounce(lastButton);

deze code roept die debounce functie aan en vult voor de parameter "last" de waarde van "lastButton" in. Het resultaat van de functie wordt vervolgens teruggegeven (return current) en door "currentButton = ... " wordt het resultaat toe gewezen aan currentButton.
Debounce is dus ook een standaard arduino commando.
Nee, debounce is een functie die net daarvoor gedefinieerd is (regel 16 - 33). Door die functie aan te roepen wordt de code uitgevoerd die in de functie staat. Lees ook dit even door: http://www.arduino.cc/en/Reference/FunctionDeclaration

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Springuin schreef op dinsdag 12 juli 2011 @ 09:11:
[...]

Nee, last is een parameter van die functie:
code:
1
boolean debounce(boolean last)

De code die verderop staat:
code:
1
2
// huidige status van de knop opvragen via de debounce functie, als parameter de laatste status meegeven
    currentButton  = debounce(lastButton);

deze code roept die debounce functie aan en vult voor de parameter "last" de waarde van "lastButton" in. Het resultaat van de functie wordt vervolgens teruggegeven (return current) en door "currentButton = ... " wordt het resultaat toe gewezen aan currentButton.


[...]

Nee, debounce is een functie die net daarvoor gedefinieerd is (regel 16 - 33). Door die functie aan te roepen wordt de code uitgevoerd die in de functie staat. Lees ook dit even door: http://www.arduino.cc/en/Reference/FunctionDeclaration
Er is voor mij nog een lange weg te gaan zie ik al wel. al moet je de code's zo 'logisch modelijk' opbouwen.
Deze had ik ook gevonden, moet deze maar is goed door gaan nemen. http://www.google.nl/url?...ppQmmFKcd3Bnwkr85yc6_AFKg


Edit: Vandaag heb ik aardig wat gedaan. een ledje harder en zachter laten branden door middel van een licht cell. en een servo aangestuurd door middel van een Potentiometer. Dit lukt me nu al aardig allemaal.

Nu had ik ook een lcd schermpje en een temp sensor besteld.

Deze heb ik individueel getest, en het werkt. Ik had de temp sensor aangesloten op 5V. deze werkte wel..maar gaf naar mijn idee een te hoge temperatuur aan. Nu heb ik hem op 3.3V gezet en nu geeft hij een(een betere) lagere temp aan. Ik hoop niet dat ik de temp sensor nu beschadigd heb. Terwijl in de specs wel Supply Voltage: +5 V staat. Voor het schermpje en temp meter heb ik de libaries gehaald en in de goede map geplaatst. Dit is de voorbeeld code die ik heb gebruikt voor de temp sensor. Nu zou ik het leuk vinden als ik de temp weer kan geven op mijn lcd scherm. maar hoe dit moet? voor mij nog te moeilijk denk ik.
De code komt van deze website.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/* YourDuino.com Example Software Sketch
   DHT11 Humidity and Temperature Sensor test
   Credits: Rob Tillaart
   http://arduino-direct.com/sunshop/index.php?l=product_detail&p=162
   terry@yourduino.com */
   
/*-----( Import needed libraries )-----*/
#include <dht11.h>

/*-----( Declare objects )-----*/
dht11 DHT11;

/*-----( Declare Constants, Pin Numbers )-----*/
#define DHT11PIN 2

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
}/*--(end setup )---*/

void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  Serial.println("\n");

  int chk = DHT11.read(DHT11PIN);

  Serial.print("Read sensor: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  }

  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);

  Serial.print("Temperature (oF): ");
  Serial.println(Fahrenheit(DHT11.temperature), 2);

  Serial.print("Temperature (K): ");
  Serial.println(Kelvin(DHT11.temperature), 2);

  Serial.print("Dew Point (oC): ");
  Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));

  Serial.print("Dew PointFast (oC): ");
  Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));

  delay(2000);
}/* --(end main loop )-- */

/*-----( Declare User-written Functions )-----*/
//
//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
        return 1.8 * celsius + 32;
}

//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
        return celsius + 273.15;
}

// dewPoint function NOAA
// reference: http://wahiduddin.net/calc/density_algorithms.htm 
double dewPoint(double celsius, double humidity)
{
        double A0= 373.15/(273.15 + celsius);
        double SUM = -7.90298 * (A0-1);
        SUM += 5.02808 * log10(A0);
        SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
        SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
        SUM += log10(1013.246);
        double VP = pow(10, SUM-3) * humidity;
        double T = log(VP/0.61078);   // temp var
        return (241.88 * T) / (17.558-T);
}

// delta max = 0.6544 wrt dewPoint()
// 5x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
        double a = 17.271;
        double b = 237.7;
        double temp = (a * celsius) / (b + celsius) + log(humidity/100);
        double Td = (b * temp) / (a - temp);
        return Td;
}

/* ( THE END ) */

[ Voor 60% gewijzigd door Dacuuu op 12-07-2011 20:39 ]


Acties:
  • 0 Henk 'm!

  • Mescaline
  • Registratie: Oktober 2007
  • Laatst online: 10-09 23:38
Rmg schreef op donderdag 30 juni 2011 @ 09:19:
Ik zou zeggen doe dat pulsen lezen mooi op een interrupt :Y
Enig idee of je ook aan analoge poorten een interrupt kunt hangen, en die vervolgens met een boven- en onderwaarde af kunt laten vuren? Ik ben op zoek naar interrupt-driven thermokoppel afhandeling.

Ik ben er al even naar op zoek, maar of de Arduino kan het niet, of google heeft een hekel aan me :)

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Mescaline schreef op woensdag 13 juli 2011 @ 18:20:
[...]

Enig idee of je ook aan analoge poorten een interrupt kunt hangen, en die vervolgens met een boven- en onderwaarde af kunt laten vuren? Ik ben op zoek naar interrupt-driven thermokoppel afhandeling.

Ik ben er al even naar op zoek, maar of de Arduino kan het niet, of google heeft een hekel aan me :)
vziw niet, ik zou dan een timer aanmaken en daarin je adc uitlezen en dan iets afvuren

Acties:
  • 0 Henk 'm!

  • Mescaline
  • Registratie: Oktober 2007
  • Laatst online: 10-09 23:38
Rmg schreef op woensdag 13 juli 2011 @ 18:48:
[...]

vziw niet, ik zou dan een timer aanmaken en daarin je adc uitlezen en dan iets afvuren
Mja, dat is wat ik nu doe idd, maar dan draai ik code om de adc uit te lezen, terwijl dit niet nodig is, wat natuurlijk weer cycles kost. Dat is nu net waar ik een tekort van op probeer te lossen :)

Acties:
  • 0 Henk 'm!

  • Mini-me
  • Registratie: November 1999
  • Niet online
Mescaline schreef op woensdag 13 juli 2011 @ 18:20:
[...]

Enig idee of je ook aan analoge poorten een interrupt kunt hangen, en die vervolgens met een boven- en onderwaarde af kunt laten vuren? Ik ben op zoek naar interrupt-driven thermokoppel afhandeling.

Ik ben er al even naar op zoek, maar of de Arduino kan het niet, of google heeft een hekel aan me :)
De ATMEGA heeft een analoge comparator die je als interrupt source kunt gebruiken. Kwestie van de goede trigger spanning aan de juiste pin aanbieden en je bent er.

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Mini-me schreef op woensdag 13 juli 2011 @ 19:47:
[...]

De ATMEGA heeft een analoge comparator die je als interrupt source kunt gebruiken. Kwestie van de goede trigger spanning aan de juiste pin aanbieden en je bent er.
dan zit je wel een beetje met het probleem dat je alleen een boven OF onderwaarde kan triggeren toch?

Acties:
  • 0 Henk 'm!

  • Mini-me
  • Registratie: November 1999
  • Niet online
Rmg schreef op woensdag 13 juli 2011 @ 19:56:
[...]
dan zit je wel een beetje met het probleem dat je alleen een boven OF onderwaarde kan triggeren toch?
Ah, misschien iets te snel gelezen ;) Het gaat idd om een enkele comparator dus een hysterese kun je daarmee niet implementeren.

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 27-08 14:18

pieturp

gaffa!

Zomaar een gedachte: zou je die switch tussen boven- en onderwaarde niet kunnen omdraaien op 't punt dat 'ie triggert?

Dus: signaal (te) laag -> interrupt -> zet comparator-setting om -> signaal (te) hoog -> interrupt -> zet comparator-setting om ->

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

pieturp schreef op donderdag 14 juli 2011 @ 00:52:
Zomaar een gedachte: zou je die switch tussen boven- en onderwaarde niet kunnen omdraaien op 't punt dat 'ie triggert?

Dus: signaal (te) laag -> interrupt -> zet comparator-setting om -> signaal (te) hoog -> interrupt -> zet comparator-setting om ->
dat zou in principe kunnen maar dan moet je systeem wel maar zo reageren. ;)

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Is het normaal dat mijn mega 2560 clone als arduino uno word herkend in windows?
Ik heb de arduino aan de pc aangesloten, kreeg melding dat er geen drivers voor waren. dus ik heb deze handmatig geïnstalleerd uit het software pakket. maar hij blijft hem herkennen als uno. In het arduino Sketch programma heb ik zelf handmatig de mega 2560 aangeklikt. Ik heb de arduino nog even aan mijn laptop aangesloten. maar hier precies het zelfde. De dingen die ik tot nu toe met de arduino heb gedaan werkte nog wel. (led knipperen, led aan/uit. door licht cel, temp sensor, lcd scherm aangesloten)

Afbeeldingslocatie: http://fotopocket.nl/fpimages/2011/07/14/afd821eea44faa5838a54511d6f60bc0/Knipsel.JPG
Afbeeldingslocatie: http://fotopocket.nl/fpimages/2011/07/14/685bcad29e2321ff04de42cad4163354/P1090154.JPG
Afbeeldingslocatie: http://fotopocket.nl/fpimages/2011/07/14/ca241f722d9f2de6e1c6bcc2a4794e48/P1090155.JPG

Acties:
  • 0 Henk 'm!

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
"Arduino" is een handelsmerk. Als er Arduino op staat, en dat staat het, dan moet het ook een echte Arduino zijn. Dus je hebt of een echte te pakken, of een complete vervalsing. In dat laatste geval is de maker (en verkoper vermoed ik) in overtreding, maar is het tevens niet vreemd dat het ding zich ook meldt als "Arduino".

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Fuzzillogic schreef op donderdag 14 juli 2011 @ 09:44:
"Arduino" is een handelsmerk. Als er Arduino op staat, en dat staat het, dan moet het ook een echte Arduino zijn. Dus je hebt of een echte te pakken, of een complete vervalsing. In dat laatste geval is de maker (en verkoper vermoed ik) in overtreding, maar is het tevens niet vreemd dat het ding zich ook meldt als "Arduino".
Ik had gelezen dat als je een clone maakt, dit niet als arduino mag verkopen, maar wel wel als een vervorming van die naam. Ik heb denk ik dan een clone die zicht wil voordoen als een 'echte'. Ik heb alleen geen italiaanse vlag op mijn arduino, en de prijs was ook lager. maargoed. dat maakt mij opzich niet uit. de chip die er op zit klopt wel. Altans, aan de tekst die er buiten op staat :+

Edit: Deze heb ik gekocht: http://cgi.ebay.com/ws/eB...iewItem&item=170596347875

[ Voor 5% gewijzigd door Dacuuu op 14-07-2011 09:54 ]


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 19:09

almightyarjen

When does the hurting stop?

Ik ben bezig met een robot welke wordt aangestuurd door een arduino mega. Zowel de vooras als de achteras zijn sturend en door middel van een (zelf gemaakte) rotary encoder wordt de positie bepaald. Beide stuurassen worden door een aparte motor aangestuurd.

Code voor één as:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void SteerFront (int z)  // z = gewenste positie: 0 = links, 14 = midden, 28 = rechts
{
    if (SteerPosition > z) // in dit geval moet er naar links gestuurd worden, SteerPosition = huidige positie stuuras
    {
      PulseTotal = 0;
      PreviousSteerPulse = 0;
      Pulses = SteerPosition - z; // aantal pulsen dat er gedraaid moet worden
      while (PulseTotal < Pulses)
     {
       digitalWrite (MotSteerAFront, HIGH);  // bit voor aansturing motordriver: motor draait
       digitalWrite (MotSteerBFront, LOW);  //bit voor aansturing motordriver: motor draait
       digitalWrite (EnSteerFront, HIGH);  // bits voor aansturing motordriver: motor draait
       CurrentSteerPulse = digitalRead (SensSteerPulseFront); // uitlezen of rotary encoder
       if (CurrentSteerPulse > PreviousSteerPulse)  //als rotary encoder 1 geeft terwijl die vorige keer 0 was
       {
         PulseTotal = PulseTotal +1; // aantal doorlopen pulsen wordt verhoogd met 1
       }
       PreviousSteerPulse = CurrentSteerPulse;
     }
     digitalWrite (MotSteerAFront, HIGH);  //bit voor motordriver: motor stopt
     digitalWrite (MotSteerBFront, HIGH);  //bit voor motordriver: motor stopt
     PulseTotal = 0;
     PreviousSteerPulse = 0;
     SteerPosition = z;
    }
    if (SteerPosition < z) // in dit geval moet er naar rechts gestuurd worden
   // (verhaal zelfde als hierboven alleen dan voor naar rechts draaien)
    ----- 
}

Deze code werkt gewoon goed en ik heb dezelfde code voor de sturing van de achteras.

Mijn vraag: hoe laat ik deze codes parallel aan elkaar draaien :? Er zit een while-loop in dus hij zal eerst bijvoorbeeld de voorwielen helemaal uitsturen en dan pas de achterwielen. Hoe kan ik dit tegelijk laten geschieden? :?

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Tower410
  • Registratie: Augustus 2006
  • Laatst online: 10-09 19:13
Dan moet je die whiles omzetten in if's, zodat hij elke loop van elke while een stapje doet. Daar komt natuurlijk nogal wat bij kijken, aangezien je met van alles rekening moet gaan houden, maar volgens mij is het de enige manier om binnen Arduino twee dingen 'tegelijk' te laten gebeuren.

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Dacuuu schreef op donderdag 14 juli 2011 @ 09:30:
Is het normaal dat mijn mega 2560 clone als arduino uno word herkend in windows?
Ik heb de arduino aan de pc aangesloten, kreeg melding dat er geen drivers voor waren. dus ik heb deze handmatig geïnstalleerd uit het software pakket. maar hij blijft hem herkennen als uno. In het arduino Sketch programma heb ik zelf handmatig de mega 2560 aangeklikt. Ik heb de arduino nog even aan mijn laptop aangesloten. maar hier precies het zelfde. De dingen die ik tot nu toe met de arduino heb gedaan werkte nog wel. (led knipperen, led aan/uit. door licht cel, temp sensor, lcd scherm aangesloten)
Kijk even of je de features kunt aanspreken die niet op de normale uno zitten zoals de 2e uart en de extra analoge poorten, werkt dat dan is het prima.hoe duur was deze mega cloon btw als het voor een mooie prijs is is het wel een leuk ding :Y)

Acties:
  • 0 Henk 'm!

  • brambo123
  • Registratie: December 2006
  • Laatst online: 11-09 21:30
@Dacuuu
De naam die windows zegt zegt alleen iets over de usb-serial converter die erop zit.
Mogelijk heeft de maker verkeerde software in de Atmega8u2 gedaan.
Dat is de kleine chip direct achter de usb connector.
Nog een makkelijke manier om te test: de fading example op pin 13 i.p.v. 9 erop zetten.
Op de 'normale' arduino is pin 13 geen pwm, dus kan alleen met een arduino mega.

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
@Rmg: In de uurtjes waarmee ik met de mega heb zitten spelen, heb ik volgens mij een keer A1 en A2, maar ook A10 gebruikt, dus die werken wel geloof ik. ( maar ik ga zo een weekje weg, erna test ik het nog eens uit. de UART zoek ik dan ook op hoe dat moet, iets met communicatie weet ik nu alleen.

@brambo123: Een ledje laten faden op pin13 werkt 100%. dit heb ik getest. ik had het standaard "led fade" sketch veranderd van pin 9 naar pin 13. en hij werkte perfect.


De rede dat ik de arduino mega heb gekocht is omdat ik dit een keer wil maken, en dan heb je meer poorten nodig.

dit is de link naar ebay

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 19:47

Rmg

Dacuuu schreef op vrijdag 15 juli 2011 @ 09:43:
@Rmg: In de uurtjes waarmee ik met de mega heb zitten spelen, heb ik volgens mij een keer A1 en A2, maar ook A10 gebruikt, dus die werken wel geloof ik. ( maar ik ga zo een weekje weg, erna test ik het nog eens uit. de UART zoek ik dan ook op hoe dat moet, iets met communicatie weet ik nu alleen.

@brambo123: Een ledje laten faden op pin13 werkt 100%. dit heb ik getest. ik had het standaard "led fade" sketch veranderd van pin 9 naar pin 13. en hij werkte perfect.


De rede dat ik de arduino mega heb gekocht is omdat ik dit een keer wil maken, en dan heb je meer poorten nodig.

dit is de link naar ebay
dan heb je gewoon een goeie mega ;)

Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Rmg schreef op vrijdag 15 juli 2011 @ 09:44:
[...]


dan heb je gewoon een goeie mega ;)
Cool :+. Nu een weekje weg, erna weer met de Arduino aan de gang, en vooral heel veel leren!

Gegroet.

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 19:09

almightyarjen

When does the hurting stop?

Tower410 schreef op vrijdag 15 juli 2011 @ 01:16:
Dan moet je die whiles omzetten in if's, zodat hij elke loop van elke while een stapje doet. Daar komt natuurlijk nogal wat bij kijken, aangezien je met van alles rekening moet gaan houden, maar volgens mij is het de enige manier om binnen Arduino twee dingen 'tegelijk' te laten gebeuren.
Bedankt voor de tip! Ik heb de while's idd omgezet naar if's. Stel dat beide motoren 16 stappen moeten doorlopen, dan lopen de motoren één voor één een stap en dat 16 keer. Nadeel hiervan is dat de sturing erg schokkerig verloopt en dat het veel langer duurt (langer dan 2 maal een cyclus van 16 stappen), waarschijnlijk doordat de motor elke keer op gang moet komen.

Enige echte oplossing die ik zo zie is gebruik maken van een extra microcontroller. Ik de motoren nu weer gewoon "na elkaar" staan wat op dit moment voldoet, wellicht dat ik een extra arduino nano inbouw oid :)

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
digitalWrite neemt veel cyclussen in beslag, had laats software pwm gemaakt en kwam erachter dat digitalWrite echt veel cyclussen gebruikt. digitalWrite is gewoon een functie die Arduino programmeurs hebben geschreven. Als je dus een digitalWrite aanroep dan voer je eigenlijk de volgende functie uit.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void digitalWrite(uint8_t pin, uint8_t val)
{
 uint8_t timer = digitalPinToTimer(pin);
 uint8_t bit = digitalPinToBitMask(pin);
 uint8_t port = digitalPinToPort(pin);
 volatile uint8_t *out;
 
 if (port == NOT_A_PIN) return;
 
 // If the pin that support PWM output, we need to turn it off
 // before doing a digital write.
 if (timer != NOT_ON_TIMER) turnOffPWM(timer);
 
 out = portOutputRegister(port);
 
 if (val == LOW) *out &= ~bit;
 else *out |= bit; 
}


Dan zie je dus al dat je dus met elke digitalWrite een hele berg instructies uitvoert. Dat neemt ongeveer 57 cyclussen in beslag.

digitalWrite(9,HIGH); // 57 clock cycles
digitalWrite(9,LOW); // 57 clock cycles
digitalWrite(8,value); // 57 clock cycles

De oplossing is gewoon C gebruiken voor die regels, doet precies het zelfde maar dan 25 x sneller.

bitSet(PORTB,1); // 2 clock cycles
bitClear(PORTB,1); // 2 clock cycle
bitWrite(PORTB,0,value); // 3 clock cycles

Wellicht dat je je code daarmee stukje sneller kan maken zodat het niet meer schokkerig is. Arduino taal is nu eenmaal erg lomp, maar lees daarin tegen wat makkelijker.

Edit/
Geldt overigens voor meer functies van arduino die gebruik maken van digitalWrite die zijn door deze rede dus ook erg traag, zoals shiftout functie. En de code word ook onnodig groot door steeds de digitalWrite functie aan te roepen. Voorbeeldje van mijn led dimmer die in arduino taal 8KB groot is, code omgezet naar C en dan kom ik op ongeveer 3KB uit.

digitalRead, analogRead, analogWrite, etc hebben soort gelijk probleem daarmee word net als digitalWrite een stuk code aangeroepen.

[ Voor 14% gewijzigd door mad_max234 op 19-07-2011 14:24 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Mars Warrior
  • Registratie: Oktober 2003
  • Laatst online: 16:15

Mars Warrior

Earth, the final frontier

mad_max234 schreef op dinsdag 19 juli 2011 @ 14:04:
[...]
Dan zie je dus al dat je dus met elke digitalWrite een hele berg instructies uitvoert. Dat neemt ongeveer 57 cyclussen in beslag.

digitalWrite(9,HIGH); // 57 clock cycles
digitalWrite(9,LOW); // 57 clock cycles
digitalWrite(8,value); // 57 clock cycles

De oplossing is gewoon C gebruiken voor die regels, doet precies het zelfde maar dan 25 x sneller.

bitSet(PORTB,1); // 2 clock cycles
bitClear(PORTB,1); // 2 clock cycle
bitWrite(PORTB,0,value); // 3 clock cycles

Wellicht dat je je code daarmee stukje sneller kan maken zodat het niet meer schokkerig is. Arduino taal is nu eenmaal erg lomp, maar lees daarin tegen wat makkelijker.
En als je dan kijkt in de gebruikte sturing hoevaak een digitalWrite wordt aangeroepen, dan kan het best zijn dat de sturing een factor 10 sneller wordt en dat je probleem volledig is opgelost...

Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 19:09

almightyarjen

When does the hurting stop?

Bedankt! Ik zal het eens proberen. Kan ik in de arduino omgeving gewoon C gebruiken om moet ik de compiler "vertellen" dat er een stukje C tussen zit?

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • TNW
  • Registratie: Januari 2007
  • Laatst online: 09-09 14:01

TNW

Ben momenteel projectjes aan het inbouwen:

http://ruthenium.dyndns.org/meuk/inkubator.JPG

Dit wordt een automatische broedmachine. Print is momenteel wat meer bebouwd dan op de foto, maar zichtbaar zijn de 5V voeding met 7805, sockets voor de atmega328 en PCF8583 en de houder voor de backupbatterij voor de RTC.

Atmega328 loopt al, simpel testprogje ingeladen welke een ledje laat knipperen.

Een dezer dagen verder, LCD, knoppen en RTC op de processor aansluiten, connectoren voor de temperatuursensor en solid state relais monteren en testen :)

Weblog | Straling!


Acties:
  • 0 Henk 'm!

  • Mr_gadget
  • Registratie: Juni 2004
  • Laatst online: 11-09 21:52

Mr_gadget

C8H10N4O2 powered

Ik wil een de ftdi chip van de arduino gebruiken om een router (met seriële poort) te debuggen. Deze werkt echter op 3.3 volt. Zoals hier beschreven zou het ook kunnen.
Zou ik http://www.dickbest.nl/we...t=viewProd&productId=3935 als level shifter kunnen gebruiken (datasheet)?

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
almightyarjen schreef op dinsdag 19 juli 2011 @ 14:50:
Bedankt! Ik zal het eens proberen. Kan ik in de arduino omgeving gewoon C gebruiken om moet ik de compiler "vertellen" dat er een stukje C tussen zit?
Ja je kan gewoon C gebruiken tussen de arduino code door, zoals je ziet doet arduino dat ook. digitalWrite is niks anders dan stukje C code die de handelingen die je normaal moet doen achter de schermen verricht.

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Zou ook weer eens wat foto's posten van mijn huidige arduino project, de aquarium computer. Is nog steeds testversie, firmware is nog niet helemaal klaar, en pc software moet nog geschreven worden, etc.

Afbeeldingslocatie: http://i56.tinypic.com/2uz9k3o.jpg

Afbeeldingslocatie: http://i56.tinypic.com/2n6hqh1.jpg

En nu als die in de behuizing is ingebouwd.
Afbeeldingslocatie: http://i54.tinypic.com/11ax4t3.jpg

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 20:08
mad_max234 schreef op woensdag 20 juli 2011 @ 13:02:
Zou ook weer eens wat foto's posten van mijn huidige arduino project, de aquarium computer. Is nog steeds testversie, firmware is nog niet helemaal klaar, en pc software moet nog geschreven worden, etc.

[afbeelding]

[afbeelding]

En nu als die in de behuizing is ingebouwd.
[afbeelding]
Dat ziet er netjes uit!

Acties:
  • 0 Henk 'm!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 17:01

Rhapsody

In Metal We Trust

mad_max234 schreef op woensdag 20 juli 2011 @ 13:02:
Zou ook weer eens wat foto's posten van mijn huidige arduino project, de aquarium computer. Is nog steeds testversie, firmware is nog niet helemaal klaar, en pc software moet nog geschreven worden, etc.

[afbeelding]

[afbeelding]

En nu als die in de behuizing is ingebouwd.
[afbeelding]
Cool!

Wat voor Arduino plaatje heb je daar? Heb je die pinnetjes voor die display er zelf in gezet?

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Dat is zelf ontworpen printje met alle hardware voor de aquarium controller.

Atmega328p-AU
128Kb eeprom
ds1307
Aantal shift registers, voor de uitgangen(Relais , Led/fan dimmer, TL dimmer, etc) en lcd
Opamp met actieve sallen-key low pass filter, om ph probe uit te lezen.
Ingang voor IR of 1-wire
2x temperatuur ingangen.
USB via attiny45 en avr cdc.

Ga de optiboot bootloader gebruiken voor update systeem, ga update software schrijven voor op de pc zodat de firmware met 1 druk op de knop geüpdate kan worden. Zal eerst check uitvoeren of er nieuwe firmware is te downloaden, dan zal die de nieuwe firmware ophalen en de aquarium controller updaten met de nieuwste firmware via de USB.

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 03-09 11:04

mux

99% efficient!

Dan ga ik nog maar eens een van mijn standaardvragen stellen: waarom geen Atmega32U4?

Youtube: PowerElectronicsBlog - Plank2 (4W computer)


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Dan ook maar een van de standaard antwoorden op je standaard vragen. Waarom, omdat het ook zo kan. :D

Heb nu alles discreet en niks softwarematig, hoef nergens rekening mee te houden in de code. ;)

Edit/
De volgende versie is gebaseerd op een Xmega, het printje daarvan staat al in de stijgers. En ga voor de usb een FTDI chip gebruiken, ja weet het ben van mijn geloof afgevallen en gaat toch FTDI gebruiken.

Heb nog project lopen is eigenlijk tegenover gestelde van dit, daar zit alles in 1 atmega48 gepropt, usb, rtc, etc, allemaal softwarematig, en in C geschreven. De aquarium computer is dan ook het laatste grote arduino project. Maar aquarium computer ben ik dik jaar geleden mee begonnen als eerst elektronica project ooit, kon toen nog niet overweg met de avr programmeer omgeving en alles wat erbij komt kijken.

[ Voor 62% gewijzigd door mad_max234 op 20-07-2011 15:23 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 03-09 11:04

mux

99% efficient!

mad_max234 schreef op woensdag 20 juli 2011 @ 14:51:
(...) omdat het ook zo kan. :D (...)
Hét antwoord dat altijd correct is (op een waarom-vraag) :)

Youtube: PowerElectronicsBlog - Plank2 (4W computer)


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
Hallo mensen, ik ben bezig met de MMA7361 accelerometer sensor. Maar ik kom er maar niet uit. kan iemand met mij een beetje de basis uitleggen. ik weet dat je hem kan switchen van 1.5 / 6 G.. maar ik zou niet weten hoe?

ik heb nu deze code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int xAs =A8;


void setup() {

Serial.begin(9600);
pinMode(3, OUTPUT);   // SL PIN CONNECTED ON DIGITAL PIN 3
}

void loop() {
 digitalWrite(3, HIGH);  // SET THE SL PIN HIGH (do i need this?)
 Serial.println(analogRead(xAs)); //SHOW THE NUMBERS I GET FROM ANALOG PIN 8 (Y AXLE)
 delay(50);

}


En dan krijg ik deze waardes er uit. (op de Y as)

353
354
353
353
353
352
352
355
353

[ Voor 50% gewijzigd door Dacuuu op 23-07-2011 18:46 ]


Acties:
  • 0 Henk 'm!

  • soepah
  • Registratie: December 2006
  • Laatst online: 08:49
Als het goed is (Sensor algemeen dan) steld die waarde een bepaalde acceleratie (of hoek of wat voor sensor 't dan ook is) voor,
Als het goed is zou je bij het bewegen van de sensor andere waarden kunnen krijgen.
In de datasheet staat vast wel iets van een richtlijn van wat de waarde ongeveer zou moeten zijn in bepaalde omstandigheden.

wie van vissen houdt, houdt niet van vissen


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
soepah schreef op maandag 25 juli 2011 @ 08:52:
Als het goed is (Sensor algemeen dan) steld die waarde een bepaalde acceleratie (of hoek of wat voor sensor 't dan ook is) voor,
Als het goed is zou je bij het bewegen van de sensor andere waarden kunnen krijgen.
In de datasheet staat vast wel iets van een richtlijn van wat de waarde ongeveer zou moeten zijn in bepaalde omstandigheden.
Het werkt nu. Nu nog een manier vinden om een beetje te filteren.
als de sensor op mijn tafel ligt krijg ik bijv deze waardes.

"352
355
353" Waarmee de servo motor elke keer (je ziet het bijna niet, je hoort het meer) iets draait.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Maar wat voor ADC waarde krijg je als je hel helemaal kantelt/draait? Vind deze waarde beetje dicht bij elkaar liggen om als sensor meting door te gaan, lijkt mee eerder storing die je opvangt via de kabel of zo.

Edit/
Je kan qua hardware een RC low pass filter er tussen zetten, dat is simpelste wat je kan maken. Of een actieve low pass filter maken met opamp.

Verder kan je in de code ook filteren, je kan gemiddelde nemen van aantal samples, noemen ze bij arduino smooting. :D

http://www.arduino.cc/en/Tutorial/Smoothing

[ Voor 43% gewijzigd door mad_max234 op 25-07-2011 15:31 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
mad_max234 schreef op maandag 25 juli 2011 @ 15:22:
Maar wat voor ADC waarde krijg je als je hel helemaal kantelt/draait? Vind deze waarde beetje dicht bij elkaar liggen om als sensor meting door te gaan, lijkt mee eerder storing die je opvangt via de kabel of zo.

Edit/
Je kan qua hardware een RC low pass filter er tussen zetten, dat is simpelste wat je kan maken. Of een actieve low pass filter maken met opamp.

Verder kan je in de code ook filteren, je kan gemiddelde nemen van aantal samples, noemen ze bij arduino smooting. :D

http://www.arduino.cc/en/Tutorial/Smoothing
De waardes "352 ,355,353" etc krijg ik als de sensor stil op mijn bureau ligt. Als ik hem kantel krijg ik waardes tussen de 150 en 520. Heb hem met de volgende waardes gemapt naar de servo.
waarde = map(waarde, 0, 520, 0, 179); nu is de verhouding met de servo ongeveer 2 op 1: 90 graden sensor verdraaiing is ongeveer 45 graden van de servo. Nu wil ik proberen, dat de sensor wat filtert als hij onder bepaalde hoeken staat. Maar daarmee moet ik dus met smoothing aan de gang denk ik :9

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Je zou iets kunnen maken met twee If statements, eentje gewoon met de rauwe ADC data en de andere met de smooting ADC data.

Weet niet hoe snel de reactie moet zijn van je code, want met smooting code zul je wel snelheid verliezen.

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Dacuuu
  • Registratie: Maart 2009
  • Laatst online: 20:10
mad_max234 schreef op maandag 25 juli 2011 @ 23:19:
Je zou iets kunnen maken met twee If statements, eentje gewoon met de rauwe ADC data en de andere met de smooting ADC data.

Weet niet hoe snel de reactie moet zijn van je code, want met smooting code zul je wel snelheid verliezen.
Bedankt voor het meedenken! Aan het commando 'if' had ik ook gedacht. Al moet ik nog wel heel wat uurtjes gaan prutsen om het goed te krijgen. ik wil het op motorfiets bouwen, dus montage is ook erg belangrijk. en ben erg benieuwd hoe het gaat met trillingen etc.
Pagina: 1 ... 9 ... 96 Laatste