Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 10:42

almightyarjen

When does the hurting stop?

Het enige wat ik kan vinden in een andere library die niet direct wordt aangeroepen (misschien via een omweg oid) is dit:
code:
1
2
3
4
uint32_t NXShieldI2C::readLong  (uint8_t location)
{
  if (!m_protocol) return BaseI2CDevice::readLong( location );
  else             return SoftI2cMaster::readLong( location );

Ik snap er geen drol van: je declareert een functie readLong en in die functie gebruik je gelijk readLong?? :?

Edit:
Omweg idd, gevonden:
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
uint8_t* BaseI2CDevice::readRegisters(
  uint8_t  start_register,   // start of the register range
  uint8_t  bytes_to_read,   // number of bytes to read (max 16 for lego devices)
  uint8_t* buffer,      // (optional) user-supplied buffer
  uint8_t  buffer_length,    // (optional) length of user-supplied buffer
  bool     clear_buffer)    // should we zero out the buffer first? (optional)
{
  if (!buffer)
  {
    buffer = _buffer;
  }

  if (!buffer_length)
  {
    buffer_length = BUFFER_LEN;
  }

  bytes_to_read = min(bytes_to_read, buffer_length);  // avoid buffer overflow

  if (clear_buffer)
  {
    memset(buffer, 0, buffer_length);
  }

  // We write to the I2C device to tell it where we want to read from
  Wire.beginTransmission(_device_address);
#if defined(ARDUINO) && ARDUINO >= 100
    Wire.write(start_register);
#else
    Wire.send(start_register);
#endif
    //Wire.send(bytes_to_read);
    Wire.endTransmission();

    // Now we can read the data from the device
  Wire.requestFrom(_device_address, bytes_to_read);

    for (uint8_t index = 0; Wire.available(); ++index)
    {
#if defined(ARDUINO) && ARDUINO >= 100
      buffer[index] = Wire.read();
#else
      buffer[index] = Wire.receive();
#endif
    }

    _write_error_code = Wire.endTransmission();

  return buffer;
}

[ Voor 61% gewijzigd door almightyarjen op 05-07-2014 12:35 ]

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
nee, je gebruikt de readLong() van een andere class, daarom staan die :: ervoor.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 10:42

almightyarjen

When does the hurting stop?

Ja, daar kwam ik achter, mijn kennis op het gebied van libraries is vrij beperkt :) Heb het zaakje inmiddels aan de praat :)

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
almightyarjen schreef op zaterdag 05 juli 2014 @ 13:04:
mijn kennis op het gebied van libraries is vrij beperkt
Welnu, die kennis is vandaag weer een stukje gegroeid, en je hebt het helemaal zelf uitgezocht! Proficiat!

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
Eerder deze avond probeerde ik iemand te helpen met een sketch die gebaseerd is op http://arduino.cc/en/Reference/ClientAvailable
C:
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
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { 64, 233, 187, 99 }; // Google

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}


Het probleem is dat de sketch niet werkt en bovenstaande voorbeeldsketch ook niet, ook niet met een werkend ip-adres van Google :P Voor zover wij kunnen zien wordt er wel verbinding gemaakt, maar if (client.available()) { wordt niet aangeroepen, if (!client.connected()) { wel.

De terminal output is, net als bij de voorbeeldsketch:
code:
1
2
3
4
connecting...
connected

disconnecting.


En om het nog maffer te maken: als bovenstaande sketch op een Uno met ethernetshield erop wordt uitgevoerd, dan komt er een 2e probleem bij. Er kan de 1e poging nooit verbinding gemaakt worden, maar dit
C:
1
2
3
4
5
6
7
  if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  } 
nogmaals in de sketch zetten werkt. De 1e if (client.connect(server, 80)) { faalt, de 2e werkt. Zie ook http://stackoverflow.com/...nect-always-returns-error . Op een Mega 1280 is dat 2e probleem er niet, met hetzelfde ethernetshield overigens.

Maar het originele probleem is er helaas nog wel, zowel op een Mega 1280 als een Uno en dus ook met de voorbeeldsketch, waar niet eens een werkend IP-adres van Google in staat |:(

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Ik zie zo op het eerste gezicht geen fouten in de sketch. Dus het zal wel ergens in de library zitten. Nou heb ik helaas geen Arduino met Ethernet hier liggen anders had ik het even voor je uitgeprobeerd.

Wat ik zou proberen: stel een IP binnen je netwerk in, voer het juiste IP van google in, en fake een nieuw MAC-adres.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Heb je een origineel Ethernet shield? Voor een ENC28J60 bijv. moet je UIPEthernet.h gebruiken.

Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
RobV schreef op zondag 06 juli 2014 @ 09:04:
Ik zie zo op het eerste gezicht geen fouten in de sketch. Dus het zal wel ergens in de library zitten. Nou heb ik helaas geen Arduino met Ethernet hier liggen anders had ik het even voor je uitgeprobeerd.

Wat ik zou proberen: stel een IP binnen je netwerk in, voer het juiste IP van google in, en fake een nieuw MAC-adres.
We hebben verschillende (werkende) IP- en MAC-adressen geprobeerd, ook een IP-adres van iets dat binnen het netwerk zit (HomeWizard ding die een pagina met JSON output heeft), maar ook dat geeft hetzelfde resultaat.
ThinkPadd schreef op zondag 06 juli 2014 @ 09:20:
Heb je een origineel Ethernet shield? Voor een ENC28J60 bijv. moet je UIPEthernet.h gebruiken.
Ehm, ik denk niet dat 't ethernetshield van die bekende verkoper op samenkopen origineel is, vooral niet gezien de prijs :P Maar dat shield werkt iig wel op verschillende Arduino's. Is dacht ik zo'n W5100.

Overigens hebben we ter test de sketch die een webpagina aanmaakt en de waardes van de analoge inputs daarop zet even geüpload, die werkt prima. Dus het shield is iig niet stuk.

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 13:56
Waar heb je dat IP adres van Google vandaan? Want dat geeft bij mij hier sowieso een timeout.

Nevermind, lijkt dat je dat al geprobeerd hebt.

[ Voor 21% gewijzigd door OnTracK op 06-07-2014 11:09 ]

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
Dat IP-adres staat in het voorbeeld, zie linkje dat ik er bij had gezet ;) Mbv pings naar google.nl en .com hebben we werkende adressen achterhaald, maar ook dan werkte die sketch niet :/

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 13:56
Ja ik dacht dat je jouw aangepaste versie van de sketch hier had ge'paste. Misschien kan je dat alsnog doen? Dan kan er wat specifieker gekeken worden wat bij jou het probleem is.

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
De aangepaste heb ik niet bij de hand (is hier niet gemaakt), maar het enige dat was veranderd zijn deze regels:
code:
1
2
3
4
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { 64, 233, 187, 99 }; // Google
    client.println("GET /search?q=arduino HTTP/1.0");
De eerste regel was verandert om te kijken of dat het probleem oploste, de 2e is verandert naar een adres in de gebruikte range in het betreffende netwerk en het server IP-adres is verandert naar verschillende werkende adressen van Google en uiteindelijk naar het interne adres van de HomeWizard. In de laatste regel is /search?q=arduino verandert naar /wachtwoord/get-sensors. Bij de HomeWizard wordt ipadres/wachtwoord/get-sensors gebruikt om de JSON output in de browser te zien te krijgen.

edit: Net mijn Mega 2560 en W5100 maar eens geprobeerd, als ik een IP-adres van Google invul krijg ik helemaal geen verbinding, in de browser op pc wel, vervang ik die regel door
C:
1
char server[] = "google.com";
dan krijgt ie wél verbinding, maar hetzelfde probleem als waar ik eerder een bericht over plaatste.
code:
1
2
3
4
connecting...
connected

disconnecting.


Voor de duidelijkheid:
C:
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
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 177 };
//byte server[] = { 74, 125, 224, 72 }; // Google
char server[] = "google.com";

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}


edit2: WTF, nu doet ie het hier :o Had 'm via pricewatch: TP-Link TL-WR702N aangesloten op draadloze netwerk, dataverkeer was mogelijk (met webserversketch) maar die http get sketch werkte niet. Nu zit ie bedraad aangesloten en komt er toch een shitload aan data langs op de terminal :o Al lijkt ie het de ene keer wel en de andere keer niet te doen :S , als ie failed zegt, even op reset drukken en het gaat goed.

Maar dat verklaart niet waarom de 1280 waar ik iemand gister mee hielp niet werkte, die was namelijk continu op bedraadde netwerk aangesloten.
.... en diegene is nu op een RPi overgestapt, daar werkt het meteen. :P

[ Voor 57% gewijzigd door Raven op 06-07-2014 14:44 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Kort, simpel vraagje:

Als ik 2 van deze stripjes koop:
Afbeeldingslocatie: http://thumbs3.ebaystatic.com/images/m/mG77EqmhyIhXIZvkrz-dpow/s-l225.jpg
en die op een gaatjes PCB soldeer, kan ik daar dan zo een Arduino Nano kloon indrukken? Volgens mij is de pitch van al die vierkante headers gewoon 2.54mm toch?

Heb eerder een Nano gewoon op gaatjesprint vastgesoldeerd, maar toen had ik hem later nog weer nodig en kreeg ik hem amper nog weer eruit. Dit is dan wat makkelijker...

De 15 pins variant hebben ze helaas niet, dichtste wat in de buurt komt is 16 :p

En nog een vraagje: Veel van die kloontjes worden met een CH340 USB > Serial converter aan boord geleverd. Gaat dat net zo goed als met de FTDI chipjes? In principe gebruik je dat deel na het uploaden toch niet meer... maargoed als die CH340 dingen brak zijn dan leg ik liever iets meer neer voor eentje met FTDI.

[ Voor 25% gewijzigd door ThinkPad op 06-07-2014 16:48 ]


Acties:
  • 0 Henk 'm!

  • sebastius
  • Registratie: September 2000
  • Laatst online: 20-09 13:58

sebastius

Laten we lekker link gaan doen

Ja hoor, dat is geen probleem :)

Ik kan je niks vertellen over de USB converter maar zodra je een driver hebt voor jouw OS zou het moeten werken.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Cool, thanks.

Ik bestel er gewoon eentje, en probeer het gewoon. Als het niet werkt dan krijgt de verkoper dat wel te horen >:)

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
Koop gewoon een (paar) lange, volgens mij is 40 pins een gebruikelijke maat? En knip ze zelf op maat.

Mijn binaire klok heeft ook een arduino nano op van die headers achterop zitten.

Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 20-09 21:25
Je kunt gewoon die sockets van 2*16 kopen en desnoods 2 pinnetjes eruit trekken/duwen met een tangetje. De metalen pootjes zitten er gewoon los in, je kunt ze er dus zo uitduwen met een beetje kracht.

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

Verwijderd

Afbeeldingslocatie: http://i.imgur.com/Qtb3sPA.jpg

kan je een evt. voltage regulator+condensator eronder plakken :)

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Verwijderd schreef op maandag 07 juli 2014 @ 10:08:
[afbeelding]

kan je een evt. voltage regulator+condensator eronder plakken :)
Als je wilt kun je er zelf 2 op elkaar plaatsen, heb je nóg meer ruimte 8)7

Afbeeldingslocatie: http://cdn.shopify.com/s/files/1/0045/8932/files/stacked-shields_large.jpg?1280198233

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

Verwijderd

gutgut .. :O

was alweer vergeten waarom ik hier niet zoveel meer kom, ik weet het weer tnx

[ Voor 78% gewijzigd door Verwijderd op 07-07-2014 11:18 ]


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Verwijderd schreef op maandag 07 juli 2014 @ 11:17:
gutgut .. :O

was alweer vergeten waarom ik hier niet zoveel meer kom, ik weet het weer tnx
Je kunt toch wel tegen een grapje op de maandagochtend?

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Wie helpt mij even met een geneste IF statement?

Als er wel een verbinding met de server is (actie C = 'true' ) dan moet er gekeken worden of de knop is ingedrukt (buttonstate='HIGH')

Ik heb nu dit:
C++:
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
  
//Geen verbinding met server?
if (!client.connect(server, 80)) {
  client.print("Actie A");  
} 
else {
  client.print("Actie B:");  
  client.stop();
}

//Wel verbinding met server?
if (client.connect(server, 80))
{
  client.print("Actie C:");

//knop ingedrukt?
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);   // turn LED on:    
    client.print("Actie E:"); 
  }
//knop niet ingedrukt
  else {
    client.print("Actie F:");  
  }


//Geen connectie
}
else
{
  digitalWrite(ledPin, LOW); 
  client.print("Actie D:");

}

Fictieve, versimpelde code (volgorde van if's klopt wel)

Maar dat werkt niet :S

Ik heb al geprobeerd met '&&' bij de eerste IF, maar dan is het alleen als beide voorwaarden voldaan zijn. Pas als er verbinding is mag er gecheckt worden of de knop wordt ingedrukt, en mag de bijbehorende opdracht worden uitgevoerd. Anders gewoon optie D (optie F heb ik eigenlijk niet).

8)7

[ Voor 46% gewijzigd door ThinkPad op 10-07-2014 21:18 ]


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Waar geef je buttonState een waarde? iets in de trant van

code:
1
buttonState = digitalRead(buttonPin);


Niks mis met de geneste if.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 10:42

almightyarjen

When does the hurting stop?

Zoals ik het nu lees, stel dat client.connect true is:
Regel 2 wordt overgeslagen
Else statement in regel 5 wordt uitgevoerd, inclusief client.stop.

Heeft die client.stop geen gevolgen over de volgende if statement in regel 11? Is client.connect dan niet altijd false door het stop-statement wat je daarvoor hebt uitgevoerd?

Van regel 11 zou je ook een else if statement kunnen maken, kan daar nu ff niet de gevolgen van bedenken, omdat bedtijd enzo :D

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online

Oyster

Prince

Wat werkt er niet?

Er kan in die code zoveel mis gaan, inclusief wat almightyarjen zegt.

Acties:
  • 0 Henk 'm!

  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 09:25

ResuCigam

BOFH

Je kijkt met je if/else eigenlijk 2 keer achter elkaar of je wel of geen verbinding hebt. Ik zou het ongeveer zo doen:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Wel verbinding met server? 
if (client.connect(server, 80)) { 
  client.print("Actie A:"); 
  //knop ingedrukt? 
  buttonState = digitalRead(buttonPin);          // of iets dergelijks zoals RobV al zei
  if (buttonState == HIGH) { 
    digitalWrite(ledPin, HIGH);        
    client.print("Actie B:");  
  } 
  //knop niet ingedrukt 
  else { 
    digitalWrite(ledPin, LOW);
    client.print("Actie C:");   
  } 
} 
//Geen verbinding met server? 
else {   
  client.print("Actie D:"); 
  client.stop(); 
}

We do what we must because we can.


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
RobV schreef op donderdag 10 juli 2014 @ 22:18:
Waar geef je buttonState een waarde? iets in de trant van

code:
1
buttonState = digitalRead(buttonPin);


Niks mis met de geneste if.
Die heb ik voor de eerste IF staan (de IF's staan in 'void loop {}', daarvoor staat de buttonState).

Probleem wat ik had is dat hij pas verbinding maakte als de knoop ook was ingedrukt. Of m'n sketch wou niet compilen omdat het verkeerd ging met de '{ }'

En dat er 2x gekeken wordt of er verbinding is snap ik ook niet, maar dat is niet mijn code. Zal eens kijken of het ook met één check werkt, daar wordt de code een stuk simpeler van.

Zal jullie suggesties straks even proberen, thanks.

Edit: Met de code van ResuCigam heb ik het werkend kunnen krijgen. Netter zou zijn om te werken met een interrupt, maar dat is mij nog iets te hooggegrepen nu. Heb de interval nu op 1 sec staan. Knop wordt toch wel langer dan een seconde getriggerd.

[ Voor 34% gewijzigd door ThinkPad op 11-07-2014 11:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

8)

[ Voor 98% gewijzigd door Verwijderd op 15-07-2014 09:36 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ik probeer een MAX7219 7segment display aan te sturen, maar ik kom er niet uit hoe ik mijn waarde moet formatten.

M'n sketch stuurt dit uit bijv. 129.53 W of 2205.34 W (max is 4 digits voor, 2 digits na komma)
door dit stukje code:
C++:
1
2
3
double W = 1000 * ((double) MS_PER_HOUR / time) / settings.cycles_per_kwh;
Serial.print(W, 2);
Serial.println(" W");


Nu wil ik die 'W' weergeven op m'n schermpje, ik heb dit stukje code:
C++:
1
2
3
4
5
6
7
8
void displayDigit(float value) { 
        int number = value*100;
        lc.setDigit(0,4,number/10000,false); // 100s digit
        lc.setDigit(0,3,(number%10000)/1000,false); // 10s digit
        lc.setDigit(0,2,(number%1000)/100,true); // first digit with DP on
        lc.setDigit(0,1,(number%100)/10,false); // 10th digit
        lc.setDigit(0,0,number%10,false); // 100th digit
}

Maar ik snap niet hoe dat werkt met die float, int, en delen door duizend, honderd, 10 etc....

Kan iemand mij daarmee op weg helpen?

[ Voor 3% gewijzigd door ThinkPad op 14-07-2014 13:38 ]


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
die displayDigit pakt een gebroken getal (bijv 18.39), dan x100 om van de breuk af te komen (1839), en breekt dat met wat wiskunde op in 5 nummertjes: 0, 1, 8, 3, 9.

De . neemt geen karakter in dus die wordt apart aangezet in de 3e setDigit.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Dankje :) Wat doet dat '%' teken dan? Dat snap ik niet helemaal... Geef je daarmee aan welk karakter je wilt pakken? En hoe werkt dat dan? Ik kan daar nergens echt duidelijke uitleg over vinden.

Ik vond dit voorbeeld:
C++:
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
void printNumber(int v) {
    int ones;
    int tens;
    int hundreds;
    boolean negative;   

    if(v < -999 || v > 999) 
       return;
    if(v<0) {
        negative=true;
        v=v*-1;
    }
    ones=v%10;
    v=v/10;
    tens=v%10;
    v=v/10;
    hundreds=v;         
    if(negative) {
       //print character '-' in the leftmost column 
       lc.setChar(0,3,'-',false);
    }
    else {
       //print a blank in the sign column
       lc.setChar(0,3,' ',false);
    }
    //Now print the number digit by digit
    lc.setDigit(0,2,(byte)hundreds,false);
    lc.setDigit(0,1,(byte)tens,false);
    lc.setDigit(0,0,(byte)ones,false);
}

http://playground.arduino...Control#NumberSeg7Control
Maar die is voor 3 getallen voor de komma, ik heb er soms 4....

Ik snap wat de code ongeveer doet, maar ik snap niet hoe je de duizendtallen enzo bepaalt. (Wiskunde is ook niet mijn sterkste kant :+ ) Hoe pas ik dit aan voor 4 karakters met 2 achter de komma?

[ Voor 71% gewijzigd door ThinkPad op 14-07-2014 14:17 ]


Acties:
  • 0 Henk 'm!

  • Oyster
  • Registratie: Januari 2003
  • Niet online

Oyster

Prince

ThinkPadd schreef op maandag 14 juli 2014 @ 13:54:
Dankje :) Wat doet dat '%' teken dan? Dat snap ik niet helemaal... Geef je daarmee aan welk karakter je wilt pakken? En hoe werkt dat dan? Ik kan daar nergens echt duidelijke uitleg over vinden.
http://arduino.cc/en/Reference/Modulo :Y)

Als je hiermee rap verder wilt zou ik even een goede tutorial of boek over C lezen. :)

[ Voor 11% gewijzigd door Oyster op 14-07-2014 16:14 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Thanks :) Was al op zoek geweest 'arduino percentage sign' etc, maar kon er niet op komen. Zei toch dat wiskunde niet m'n sterkste kant is ;)

Opzich werkt het nu, als het verbruik maar 3 cijfers heeft..... Getallen achter de komma laat hij ook niet zien, maar dat is niet eens zo belangrijk

Als het 2094 is dan zie ik alleen 094, 1018 = 018.
Het eerste cijfer valt dus weg op de een of andere manier.

C++:
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
void displayDigit(int value) 
{
  int ones;
  int tens;
  int hundreds;
  int thousands;
  boolean zero;
  boolean vierdigits;  
  if(value < 1000 ) {
    vierdigits=false;
  }
    
  ones=value%10;
  value=value/10;
  tens=value%10;
  value=value/10;
  hundreds=value%10;
  value=value/10;
  thousands=value%10;
  value=value/10;
 

  if(vierdigits) {
  lc.setDigit(0,3,(byte)thousands,false); 
  lc.setDigit(0,2,(byte)hundreds,false);
  lc.setDigit(0,1,(byte)tens,false);
  lc.setDigit(0,0,(byte)ones,false);      
  }

  else {   
  lc.setChar(0,3,' ',false); //duizendtal een blanco character laten weergeven
  lc.setDigit(0,2,(byte)hundreds,false);
  lc.setDigit(0,1,(byte)tens,false);
  lc.setDigit(0,0,(byte)ones,false);   
  }

}

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
Ik denk dat dat komt doordat vierdigits nergens true wordt.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
:F Inderdaad :p nu toegevoegd en het werkt :)

Als ik de getallen na de komma ook nog wil toevoegen dan moet ik het zeker eerst * 100 doen, en dan werken met tienduizend en honderdduizend gok ik?

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Kan ik gewoon zo'n W5100 Ethernet kloon van eBay trekken? Werkt dat net zo goed als een echte Arduino Ethernet shield :? Lijkt mij wel, W5100 = W5100 toch?

Gebruik nu een ENC28J60 module, maar dat is toch wat lastiger, aangezien dat een 'domme' chip is, en de W5100 zelf ook nog een beetje kan nadenken. Verder zijn 90% van de sketches gebaseerd op die W5100, dus dat is wat makkelijker :p En de ENC28J60 is niet rockstable is mijn ervaring...

En nog een tweede vraag, iemand een tip voor een beetje goedkope Arduino projectbehuizing? (Voor de Uno / Nano). Wil als ik een project heb afgerond het in een mooi doosje maken ipv los ergens vast te knopen :p

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
Nat: http://rover.ebay.com/rov...ADME%3AL%3AOC%3ANL%3A3160
Droog: http://rover.ebay.com/rov...ADME%3AL%3AOC%3ANL%3A3160

Heb er beiden nog geen full-size arduino ingehad maar volgens mij moet dat wel passen. Zijn ze alleen wel snel vol. Maar naar mijn mening moet je projectjes die je wilt inbouwen toch met een pro micro of pro mini doen

edit: Net even gekeken, en een Uno/Leonardo past in beide doosjes.

[ Voor 5% gewijzigd door mcDavid op 21-07-2014 20:00 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Super! Ziet er professioneel uit en kost geen drol! Thanks :)

Ja ik probeer ook altijd de kleinste Arduino te pakken :P Zit alleen met dat W5100 ethernet shield dan. Volgens mij is daar niet echt een kleine module ala de enc28j60 van te krijgen... (Of ik moet al verkeerd zoeken).

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
Weet je zeker dat je niet gewoon een raspberry pi moet, ipv zo'n relatief beperkt ethernetshield?

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
rPi heb ik ook, maar die is voor sommige dingen gewoon overkill :p

Next project is P1 poort van slimme meter uitlezen. Dat kan een Arduino ook prima ;)

Ik ga de Arduino niet als NAS inzetten ofzo hoor :+ Veel meer dan een recordje wegschrijven naar een MySQL database is het vaak eigenlijk niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 22 juni 2014 @ 01:09:
Beste Arduino specialisten,

Voor een lopend project zijn wij een technisch hoogstandje aan het ontwikkelen, Arduino is een belangrijk onderdeel in het dit project. Momenteel zijn we met een team van 2 personen waarbij Arduino specialisme ontbreekt, we willen het team graag uitbreiden met een 3e teamlid. Een Arduino specialist.

We hebben veel tijd in de ontwikkeling van de techniek gestoken maar doordat we simpelweg onvoldoende ervaring hebben van Arduino zouden we graag een persoon vinden waarvan wij in de praktijk kunnen leren, ons op weg helpt maar ook is er ruimte om een blijvende aanvulling van het team te worden.

Alle componenten voor het systeem hebben we aangeschaft, enkel de kennis en ervaring ontbreekt. Lijkt het je leuk, of ken je iemand die ruimte heeft, om ons te ondersteunen in het project ga dan met ons het avontuur aan.

Groet, Nick de Jong.
WAARSCHUWING !

absoluut geen 'zaken' mee doen ... bouwt aan een luchtkasteel en het liefst op jouw kosten >:)

Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 20-09 16:03
Verwijderd schreef op maandag 21 juli 2014 @ 22:24:
[...]


WAARSCHUWING !

absoluut geen 'zaken' mee doen ... bouwt aan een luchtkasteel en het liefst op jouw kosten >:)
De manier waarop hij de post opstelde gingen bij mij al alle bellen rinkelen... Is een beetje opgesteld als zo'n scam mail: "geef mij tienduizend euro en je krijgt er een miljoen voor terug"

Misschien een beetje gechargeerd, maar zo kwam het wel op mij over...

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Bedankt voor de waarschuwing

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

Verwijderd

Vuikie schreef op maandag 21 juli 2014 @ 23:21:
[...]


De manier waarop hij de post opstelde gingen bij mij al alle bellen rinkelen... Is een beetje opgesteld als zo'n scam mail: "geef mij tienduizend euro en je krijgt er een miljoen voor terug"

Misschien een beetje gechargeerd, maar zo kwam het wel op mij over...
Nee zo zat eea niet.
Meer afspraken die niet nagekomen worden en veel 'blablabla' .. lucht dus.
En op een bepaald moment loopt dat eruit.
Volgende keer toch maar weer luisteren naar dat innerlijke stemmetje 'niet doen/niet doen' :+

Acties:
  • 0 Henk 'm!

Verwijderd

Afbeeldingslocatie: http://s16.postimg.org/6wir7j939/brains1.jpg
Afbeeldingslocatie: http://s7.postimg.org/4r0690k3v/brains2.jpg

Acties:
  • 0 Henk 'm!

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

Mars Warrior

Earth, the final frontier

Leuk hoor!
Waar heb jij die 'groentjes' gekocht? Ik neem aan op Ebay?

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


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
Die groene schroefterminals kun je inderdaad op Ebay vinden, tijd terug ook eens besteld, ook in een maatje kleiner (of groter) dacht ik. Die PCB vind ik echter veel interessanter :)

[ Voor 18% gewijzigd door Raven op 22-07-2014 12:44 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 10:42

almightyarjen

When does the hurting stop?

Da's inderdaad wel een erg mooie PCB :Y Waar heb je die vandaan?

Die schroefterminals kan je volgens mij ook bij dx krijgen...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

Verwijderd

ah.. dat is een Prototype Screw/Terminal Block Shield Board Kit For Arduino MEGA-2560 R3 KIT :*)

Afbeeldingslocatie: http://s22.postimg.org/vzy2r7t41/screwyouboard.jpg

[ Voor 12% gewijzigd door Verwijderd op 22-07-2014 14:39 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Ik heb een sketch die m'n slimme meter moet gaan uitlezen zodra die geplaatst is. Omdat ik de meter nu nog niet heb, maar wel graag wil testen of de data allemaal netjes opgehaald wordt wil ik graag een slimme meter P1 poort nabootsen met een tweede Arduino.

Kan ik dan gewoon het gehele telegram uitspugen door voor elke lijn een Serial.println te zetten, en dat in een loop te zetten? En dan de Arduino die dat uitspuugt aan m'n uitlees-Arduino hangen?

Of is dat te simpel gedacht? In het telegram zet ik dan wel een aantal variabel1++ zodat de data ook daadwerkelijk veranderd :P

Hier staat een voorbeeld van zo'n telegram wat een slimme meter elke 10sec uitspuugt.


Dat kan inderdaad :) Na LANG proberen en zoeken blijkt wel dat je voor dit soort kritische toepassingen beter de AltSoftSerial library kunt gebruiken ipv. de default SoftwareSerial. Daarmee komen boodschappen verminkt aan bij de overkant.

Heb nu een P1 dummy sketch: http://pastebin.com/rhfg0KWk (9600 baud, not inverted. Sommige slimme meters zijn 115200 en geïnverteerd, maar dat krijg ik met de AltSoftSerial niet zo 123 voor elkaar.
Variabelen is nog niet helemaal gelukt, misschien dat ik dat later nog ga doen. Ik kan nu iig verder met de ontvangende kant om de data uit te sturen naar een MySQL DB.

Uitlezen van de waarden doe ik nu met: http://phoenixinteractive...b/viewtopic.php?f=23&t=37
Maar dat kan in principe met elk ander programma waarmee je de P1 poort zou uitlezen.

[ Voor 55% gewijzigd door ThinkPad op 30-07-2014 00:13 ]


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Even een snelle demo van een digitale LED-strip icm een minimale Arduino. Ik kreeg de spulletjes een uur geleden binnen.

[YouTube: https://www.youtube.com/watch?v=nq3zkAMsr-I]

Links:
Tutorial (op de video zie je de AdaFruit sample sketch)
LED strip (ik heb 2M van 30 leds/meter genomen)

DOEL:
- USB of BLE aansluiten, en dan vanaf de laptop bedienen: laptop aan: licht aan, mailtje binnen: lichteffect, etc.

[ Voor 11% gewijzigd door RobV op 31-07-2014 17:22 ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 14:00
Om de temperatuur van water en de buitenlucht te meten heb ik 2 ds18s20 sensors aangesloten op mijn arduino mega.
Ik heb op de databus een 4.7k pull-up weerstand aangesloten.

Ik gebruik de standaard maxim dallas library.

In het begin werkte het best redelijk, maar sinds kort krijg ik heel vaan -127 terug op beide sensors.

Als ik 1 sensor aansluit werken ze beide op beide poorten, dus het lijkt niet aan de connector te liggen.

Zou dit kunnen komen doordat de 4.7k pullup te groot is voor 2 sensors op lange kabels (8m)?

Acties:
  • 0 Henk 'm!

  • nose
  • Registratie: November 2001
  • Laatst online: 04-04-2018

nose

size matters

darklord007 schreef op donderdag 31 juli 2014 @ 23:18:
Om de temperatuur van water en de buitenlucht te meten heb ik 2 ds18s20 sensors aangesloten op mijn arduino mega.
Ik heb op de databus een 4.7k pull-up weerstand aangesloten.

Ik gebruik de standaard maxim dallas library.

In het begin werkte het best redelijk, maar sinds kort krijg ik heel vaan -127 terug op beide sensors.

Als ik 1 sensor aansluit werken ze beide op beide poorten, dus het lijkt niet aan de connector te liggen.

Zou dit kunnen komen doordat de 4.7k pullup te groot is voor 2 sensors op lange kabels (8m)?
Dit heb ik vaker voorbij zien komen. Schijnt op te lossen te zijn door 4K7 door 2K te vervangen. Zelf heb ik hier (nog) geen ervaring mee.

P R N D


Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 14:00
nose schreef op vrijdag 01 augustus 2014 @ 02:39:
[...]

Dit heb ik vaker voorbij zien komen. Schijnt op te lossen te zijn door 4K7 door 2K te vervangen. Zelf heb ik hier (nog) geen ervaring mee.
ik ga het dan eens proberen, het lijkt het meest aannemelijke :)

Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
darklord007 schreef op vrijdag 01 augustus 2014 @ 10:00:
[...]


ik ga het dan eens proberen, het lijkt het meest aannemelijke :)
Volgens de 1-Wire Arduino site:
Note on resistors:
For larger networks, you can try smaller resistors.
The ATmega328/168 datasheet indicates starting at 1k6 and a number of users have found smaller to work better on larger networks.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
darklord007 schreef op donderdag 31 juli 2014 @ 23:18:
Om de temperatuur van water en de buitenlucht te meten heb ik 2 ds18s20 sensors aangesloten op mijn arduino mega.
Ik heb op de databus een 4.7k pull-up weerstand aangesloten.

Ik gebruik de standaard maxim dallas library.

In het begin werkte het best redelijk, maar sinds kort krijg ik heel vaan -127 terug op beide sensors.

Als ik 1 sensor aansluit werken ze beide op beide poorten, dus het lijkt niet aan de connector te liggen.

Zou dit kunnen komen doordat de 4.7k pullup te groot is voor 2 sensors op lange kabels (8m)?
Hoe heb je de sensoren aangesloten? Stuur je 5V mee, of voed je ze op de 'parasitic' manier (dus alleen DATA en GND).

Met dat laatste kreeg ik ook problemen bij een langere kabel, sensoren waren ineens weg. 5V meesturen en niks meer aan de hand.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Ik heb overigens een DS1820 werkende aan een kabel van een meter of 10 (en gewone elektriciteitskabel van het formaat waarop je ook een kleine fabriek kan runnen, geen netwerkkabel ofzo), en die is parasitair gevoed op 3.3V. En dat werkt prima na wat aanpassingen (was geen Arduino code echter, maar uit mijn hoofd heeft de Arduino code die aanpassingen standaard, ook al is het niet helemaal volgens de officiele manier om het te doen).

Maar om lang verhaal kort te maken: 2k weerstand gebruiken.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Eentje wil vaak ook nog wel, maar in mijn geval hingen er 4 sensoren parasitair gevoed aan een kabel van een meter of 10. Dat wou niet helemaal. Zelfs niet met een 2k2 weerstand ipv de standaard 4k7



Vraagje trouwens, ik wil meerdere variabelen in een GET request stoppen.
Ik heb nu dit:
C++:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT="mEVLT"&mEVHT="mEVHT"&mEAV="mEAV"&mG="mG" HTTP/1.1");


Maar dat werkt niet (error: expected ‘)’ before ‘mEVLT’). Als je naar de syntax-kleurmarkering kijkt dan lijkt hij het wel goed te parsen. '()' om de variabelen zetten werkt ook niet, dan krijg ik: error: expression cannot be used as a function

In voorbeelden gebruiken ze vaak dit:
C++:
1
2
client.print("GET /try?code=");
client.print(code);

Moet ik dus m'n hele URL opsplitsen in regels? Zodat ik dit krijg:
C++:
1
2
3
4
client.print("?a=");
client.print(a);
client.print("?b=");
client.print(b);


Die regel met alles erin lijkt me wat efficienter, wordt de code ook wat minder lang van.

[ Voor 16% gewijzigd door ThinkPad op 01-08-2014 12:26 ]


Acties:
  • 0 Henk 'm!

  • ProudElm
  • Registratie: Juni 2003
  • Laatst online: 19-09 22:31
Mij was het ook niet gelukt op het op 1 lange regel te krijgen. Ik moest hier ook alles per regel doen.. Handig is anders..

C:
1
2
3
4
5
6
7
8
    String url = "/arduino/index.php?power=";
    url += ConvertFloatToString(verbruikStroom);
    url += "&water=";
    url += ConvertFloatToString(verbruikWater);
    url += "&hotwater=";
    url += ConvertFloatToString(verbruikWarmWater);
    url += "&heat=";
    url += ConvertFloatToString(currentGJ);]

Acties:
  • 0 Henk 'm!

  • CrashOverDrive
  • Registratie: Augustus 2005
  • Nu online
ThinkPadd schreef op vrijdag 01 augustus 2014 @ 12:18:
Vraagje trouwens, ik wil meerdere variabelen in eedn GET request stoppen.
Ik heb nu dit:
C++:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT="mEVLT"&mEVHT="mEVHT"&mEAV="mEAV"&mG="mG" HTTP/1.1");


Maar dat werkt niet (error: expected ‘)’ before ‘mEVLT’). Als je naar de syntax-kleurmarkering kijkt dan lijkt hij het wel goed te parsen. '()' om de variabelen zetten werkt ook niet, dan krijg ik: error: expression cannot be used as a function
En als je de "Addition Operator" gebruikt? ( + )
C++:
1
client.println("tekst"+var+"tekst"+var);


Ik werk zelf nooit met strings in c/c++ dus weet het niet zeker. Maar bij c#/java is het iig wel zo :P en een punt bij php :P

[ Voor 8% gewijzigd door CrashOverDrive op 01-08-2014 14:14 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Geprobeerd, maar dat kon ook niet. Hij zei dan iets dat de operator niet mocht ofzo. En iets met 'const char'. Weet de exacte foutmelding niet meer.
Heb het nu maar gewoon onder elkaar gezet. Minder netjes, maar als het maar werkt. Kon hem nu tenminste compileren.

Is alleen een beetje raar dat de sketch het niet doet. Ik krijg helemaal geen serial output. Maar daar wil ik dit topic niet mee vervuilen, dus daar heb ik een topic voor aangemaakt op het Arduino forum: http://forum.arduino.cc/index.php?topic=258441.0

Mocht iemand tips hebben dan hoor ik dat graag, DM staat wel aan :)

[ Voor 18% gewijzigd door ThinkPad op 01-08-2014 14:17 ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Het is geen string maar een character array. Daarbij kan je geen + gebruiken.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Zojuist een BLE module om zeep geholpen. Daaaag $18... Volgende keer toch maar eentje kopen mét 5v logic converter en een breakout board. (want draadjes aan een 1mm pitch is geen doen).

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • heggico
  • Registratie: Augustus 2011
  • Laatst online: 20-09 20:15
hm.. niet getest, maar misschien zoiets?

C:
1
2
3
char buf[100];
sprintf(buf, "GET /www/slimmemeter/p1.php?mEVLT=%lu&mEVHT=%lu&mEAV=%lu&mG=%f HTTP/1.1",mEVLT,mEVHT,mEAV,mG);
client.println(buf);


Dat zou het in een char array moeten gooien, maar ik kan het momenteel niet ff testen

[ Voor 17% gewijzigd door heggico op 01-08-2014 18:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Arduino SPI Library Gains Transaction Support
- http://www.dorkbotpdx.org...i_transactions_in_arduino

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Vandaag een beetje geknutseld met de NeoPixel ledstrip en een minimal Arduino (atmega328p op een gaatjesboard). De Bluetooth module heeft het helaas niet overleefd, dus die hou je van mij tegoed:

[YouTube: http://www.youtube.com/watch?v=6DNzSCG-L_o]

Afbeeldingslocatie: http://i.imgur.com/OFtc6Zdl.jpg

PS. Al die headers zitten erop om hem eventueel nog voor een ander project te kunnen inzetten.

edit: nieuwe video

[ Voor 54% gewijzigd door RobV op 02-08-2014 19:35 . Reden: nieuwe video doet ut wel ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

Verwijderd

neo pixel testing 8)

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Pfff, dat gaat me allemaal ver boven de pet hoor!

EDIT: Video'tje boven gefixed.

[ Voor 6% gewijzigd door RobV op 02-08-2014 19:36 ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • Infant
  • Registratie: Januari 2008
  • Laatst online: 11-08 11:15

Infant

It's a floating Dino!

Ik zou voor het gemak ook de sprintf variant gebruiken:

C:
1
2
3
4
5
#include <stdio.h>
//...
char buf[100]; 
snprintf((char*)buf,100, "GET /www/slimmemeter/p1.php?mEVLT=%lu&mEVHT=%lu&mEAV=%lu&mG=%f HTTP/1.1\r\n\r\n",mEVLT,mEVHT,mEAV,mG); 
client.println(buf);


De snprintf variant is nog wat beter, in het geval je string per ongeluk meer dan 100 characters zou worden, voorkomt het dat er ongecontroleerd op je geheugen gestampt gaat worden.

Er moet ook vrij zeker een dubbbele \r\n aan het einde, zonder doen ze bij mij in ieder geval niks.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Thanks :) Zal er binnenkort weer eens naar kijken. Krijg de boel niet werkend omdat de UIPEthernet library en de AltSoftSerial library elkaar bijten waarschijnlijk :') (UIPEthernet gebruikt pin 10, AltSoftSerial gebruikt de PWM van die pinnen ofzo begreep ik).

Na m'n vakantie maar even weer goed voor gaan zitten.
Dan is de W5100 Ethernet module die ik had besteld ook wel binnen denk ik. Eindelijk een fatsoenlijke ethernet controller, beter dan dat ENC28J60 knakending die vaak nogal tegenwerkt/onbetrouwbaar is.

[ Voor 39% gewijzigd door ThinkPad op 02-08-2014 23:09 ]


Acties:
  • 0 Henk 'm!

  • warcow
  • Registratie: April 2005
  • Laatst online: 19-09 10:23
Je hebt op eBay al een arduino nano voor een paar euro, een draadloze 2,4 ghz module (met channel hopping en alles) zit ook op een paar euro. Voor 5-6 euro heb je dan de basis voor leuke projecten.. Zal binnenkort wat van dat spul bestellen.

Op mijn werk heb ik nu 3,leonardo's binnen met elk een i2c mux bordje en allemaal lux sensoren. Daarmee ga ik onze lichtoutput meetopstelling digitaliseren. Leuke van die leonardo's is dat ze direct zonder moeite keyboardaanslagen kan geven. Erg handig! :)

Acties:
  • 0 Henk 'm!

Verwijderd


howto 8)

[ Voor 27% gewijzigd door Verwijderd op 03-08-2014 10:50 ]


Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 14:00
nose schreef op vrijdag 01 augustus 2014 @ 02:39:
[...]

Dit heb ik vaker voorbij zien komen. Schijnt op te lossen te zijn door 4K7 door 2K te vervangen. Zelf heb ik hier (nog) geen ervaring mee.
Ik had 2 weerstanden van 2.2k serieel gesoldeerd. Hiervan heb ik nu 1 gebypassed (makkelijkste) en nu lijkt de uitlezing een stuk stabieler :)
Vreemd dat dit aan het begin geen (minder) issue was, maar het lijkt dus opgelost :)

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Mijn NeoPixel projectje loopt aardig. Het begint een beetje te lijken op een soort van Ambilight ding.

- Op de Apple heb ik een toolbar app gemaakt die elke 3 seconden een screenshot neemt.
- Deze screenshot wordt gescaled naar 60x1 (of hoeveel pixels je in je ledstrip hebt).
- De kleur-codes worden via de USB serial port naar de ATMega gepompt.
- Op de ATMega draait een stukje code die de 60 kleurcodes met een easing curve update
- De App kent een aantal opties zoals 'left-to-right' om de richting van je ledstrip te compenseren, en de algemene brightness.

Het effect is een supersmooth achtergrond verlichting die de kleurstelling van je display aanneemt. Omdat de achtergrond-screencapture-routine ook werkt wanneer de screensaver aan is (of zelfs de screen blanking), gaat het licht ook mooi om met de screensaver. Het licht gaat zelfs automatisch uit wanneer de display op sleep gaat. :D

Nu nog een leuke projectnaam. Ik zit te twijfelen tussen 'Delight' (Desk+Light) en 'Lumini'.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • flessuh
  • Registratie: Maart 2005
  • Laatst online: 20-09 11:15

flessuh

Set sail for fail!

Ik heb even een vraagje...

Zelf heb ik me ooit een beetje ingelezen in arduino maar ben toen nooit door gegaan.
Nu zijn wij met school bezig een boot te ontwikkelen op draagvleugels, en nu kwam iemand met de suggestie dit te doen met druksensoren in de vleugel om de hoogte te regelen (zodat je niet het water uit springt) en dit zou met arduino wel te doen moeten zijn...
Nou geloof ik graag dat het wel te doen is, maar ik heb mezelf alleen een beetje ingelezen en heb hele basic programmeer kennis, en ik wordt er op aangekeken om dit voor elkaar te krijgen.
Zouden jullie zeggen dat dit te doen is of neem ik me veel te veel hooi op mijn vork (en voor het arduino bordje ook)

https://www.dutchsolarboat.com


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
flessuh schreef op maandag 04 augustus 2014 @ 10:52:
Ik heb even een vraagje...

Zelf heb ik me ooit een beetje ingelezen in arduino maar ben toen nooit door gegaan.
Nu zijn wij met school bezig een boot te ontwikkelen op draagvleugels, en nu kwam iemand met de suggestie dit te doen met druksensoren in de vleugel om de hoogte te regelen (zodat je niet het water uit springt) en dit zou met arduino wel te doen moeten zijn...
Nou geloof ik graag dat het wel te doen is, maar ik heb mezelf alleen een beetje ingelezen en heb hele basic programmeer kennis, en ik wordt er op aangekeken om dit voor elkaar te krijgen.
Zouden jullie zeggen dat dit te doen is of neem ik me veel te veel hooi op mijn vork (en voor het arduino bordje ook)
Zonder te weten wat je skills zijn kunnen we dit natuurlijk maar heel moeilijk beoordelen. Opgedeeld in verschillende componenten zou je misschien de taken kunnen verdelen met de anderen.
- Druksensor uitzoeken (welke waarden krijg je bij welke druk)
- Hoe stuur je de stand van de vleugels aan? Via een servo?
- Welke stand moeten de vleugels staan bij een bepaalde druk (grafiek)
- Welke programmeerkennis heb ik nodig? Kan ik dat door een klasgenoot laten uitzoeken?
- Hoe snel moet de stand aangepast worden?

Meer vragen komen bij mij op, maar ik ben niet degene die op school zit. Het beste lijkt me dat je een arduino koopt/leent en daar eens flink mee gaat stoeien voordat je een draagvleugelboot gaat automatiseren.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • flessuh
  • Registratie: Maart 2005
  • Laatst online: 20-09 11:15

flessuh

Set sail for fail!

Bedankt voor je antwoord. Die vragen was ik zelf dus ook al tegengekomen, en ik ben bang dat met als enige ervaring wat php werk, dat toch te complex is. (aangezien het hier om een niet-IT studie gaat).

in ieder geval bedankt :) en ik zal toch zeker blijven kijken. Genoeg leuke dingen met arduino

https://www.dutchsolarboat.com


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
ThinkPadd schreef op vrijdag 01 augustus 2014 @ 12:18:
Vraagje trouwens, ik wil meerdere variabelen in een GET request stoppen.
Ik heb nu dit:
C++:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT="mEVLT"&mEVHT="mEVHT"&mEAV="mEAV"&mG="mG" HTTP/1.1");
Volgens mij komt dit omdat je de string afsluit bij de tweede aanhalingstekens ( " ). Dan print je mEVLT en dan begint je string weer. Je hebt dus niet 1 lange string.

Probeer eens zoiets:
C++:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT='mEVLT'&mEVHT='mEVHT'&mEAV='mEAV'&mG='mG' HTTP/1.1");

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Volgens mij heb ik dat soort dingen al wel geprobeerd. Maar toch bedankt voor de suggestie :Y

Staat nu overigens op een laag pitje. Eerst op vakantie, en daarna maar weer eens naar kijken. Mogelijk dat ik ook een kant en klare sketch hiervoor pak (Solarmeter sketch is een goede) of met Raspberry aan de gang ga....

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
peterkuli schreef op maandag 04 augustus 2014 @ 21:35:
[...]


Volgens mij komt dit omdat je de string afsluit bij de tweede aanhalingstekens ( " ). Dan print je mEVLT en dan begint je string weer. Je hebt dus niet 1 lange string.

Probeer eens zoiets:
C++:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT='mEVLT'&mEVHT='mEVHT'&mEAV='mEAV'&mG='mG' HTTP/1.1");
Waarom niet gewoon de quote escapen met \:

code:
1
client.println("GET /www/slimmemeter/p1.php?mEVLT=\"mEVLT\"&mEVHT=\"mEVHT\"&mEAV=\"mEAV\"&mG=\"mG\" HTTP/1.1");


Overigens kun je voor een querystring beter geen quotes toe te voegen, maar deze escapen met &quot;

En als je parameters toe wilt voegen, gebruik dan de '%s' placeholder in combinatie met printf/sprintf():

code:
1
2
3
4
char buf[256];

sprintf(buf, "GET /www/slimmemeter/p1.php?mEVLT=%s&mEVHT=%s&mEAV=%s&mG=%s HTTP/1.1", mEVLT, mEVHT, mEAV, mG);
client.println(buf);

[ Voor 6% gewijzigd door RobV op 04-08-2014 22:51 ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Inderdaad rob, je moet voor die " een extra \ ervoor zetten, due \"

' is voor chars
" is voor strings

Als je " gewoon wilt gebruiken in string zet je voor elke " een \

printf neem wel veel ruimte in(in AS ongeveer 1.2KB om toe te voegen en dan komt er per printf nog wat bij), als je efficiënt wilt programmeren vermijd je die, net als floats. Doe alles weer met loops als ik string opbouw. Een loop lijkt veel meer code maar na het compile is een loop 10 keer kleiner en sneller dan printf.

En buffer van 256bytes is ook wat veel, denk dat je wel met helft afkan.

Maar goed als je ruimte zat hebt kan je voor printf gaan, is niet zo dat je het echt moet mijden, en is wel lekker overzichtelijk en dat is voor sommige ook wat waard natuurlijk.

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Kruispost vanuit de kroeg!

Ok ik niet snap meer :P

Ik probeer dit na te bouwen:
http://playground.arduino.cc/Code/CapacitiveSensor

Opstelling:
portb.0 is het draadje wat moet gaan dienen als sensor.
portb.1 is rode led
portb.2 is groene led

Werkwijze:
portb.0 als outgang schakelen naar ground trekken (dus naar 0 Volt).
portb.0 als ingang schakelen en interne pull-up inschakelen.
tijd meten dat het kost om naar 5 volt te gaan.

De volgende code heb ik gebruikt:
[code=c]
while (1)
{

teller = 0;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

delay_ms(1000);

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=P

DDRB=0xFE;
PORTB=0x01;

if (PORTB.0 == 1) (teller = 1);
else if (PORTB.0 == 1) (teller = 2);
else if (PORTB.0 == 1) (teller = 3);
else if (PORTB.0 == 1) (teller = 4);
else if (PORTB.0 == 1) (teller = 5);
else if (PORTB.0 == 1) (teller = 6);
else if (PORTB.0 == 1) (teller = 7);
else if (PORTB.0 == 1) (teller = 8);
else if (PORTB.0 == 1) (teller = 9);
else if (PORTB.0 == 1) (teller = 10);
else if (PORTB.0 == 1) (teller = 11);
else if (PORTB.0 == 1) (teller = 12);
else if (PORTB.0 == 1) (teller = 13);
else if (PORTB.0 == 1) (teller = 14);
else if (PORTB.0 == 1) (teller = 15);
else if (PORTB.0 == 1) (teller = 16);
else if (PORTB.0 == 1) (teller = 17);

if (teller == 1) PORTB.2 = 1;
if (teller == 2) PORTB.1 = 1;
if (teller == 3) PORTB.1 = 1;
if (teller == 4) PORTB.1 = 1;
if (teller == 5) PORTB.1 = 1;
if (teller == 6) PORTB.1 = 1;
if (teller == 7) PORTB.1 = 1;
if (teller == 8) PORTB.1 = 1;
if (teller == 9) PORTB.1 = 1;
if (teller == 10) PORTB.1 = 1;
if (teller == 11) PORTB.1 = 1;
if (teller == 12) PORTB.1 = 1;
if (teller == 13) PORTB.1 = 1;
if (teller == 14) PORTB.1 = 1;
if (teller == 15) PORTB.1 = 1;
if (teller == 16) PORTB.1 = 1;
// delay_ms(1000);


};


[/code=c]

Maar alleen het groene ledje gaat flikkeren, rood krijg ik niet te zien. En ik snap niet wat ik fout doe?
Als ik een multimeter op portb.0 zet zie ik hem van 0 naar 5 volt en weer terug gaan. Dus dat lijkt te werken.
Enige wat ik me nog kan voorstellen is dat ik een register zet met de portb.0 = 1, en dat ik dat register uitlees ipv de werkelijke poort.
Wie o wie wordt mijn heldt vandaag? :P Het gaat om een Atgema8 :)
Thanks!

(het gaat dus niet om een officiele Arduino, maar een eigengemaakt ding :P )

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


Acties:
  • 0 Henk 'm!

Verwijderd

domme opmerking wellicht.. zit het rode ledje verkeerd om aangesloten ?

Acties:
  • 0 Henk 'm!

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Nope die werkt gewoon :) (is een RGB led)

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


Acties:
  • 0 Henk 'm!

Verwijderd

ik snap je initialisatie niet.. doe je 2x voor poort B en verschillend en achter elkaar ?
ga er even goed naar kijken.. ben met wat andere dingen tegelijk (werk) bezig :)

[ Voor 4% gewijzigd door Verwijderd op 08-08-2014 10:01 ]


Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Op welke frequentie draait je atmega? Aduino doet 16MHz, maar als je de default interne RC oscillator gebruikt met CLKDIV8 dan zit je op 1MHz en dat is misschien te langzaam.

Sluit anders even een condensatortje aan en kijk of dat wel effect heeft, bv 1nF.

[ Voor 19% gewijzigd door Ploink op 08-08-2014 10:15 ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Nu zijn Atmegas al weer een tijdje geleden bij mij, maar poort lezen doe je toch met het PIN register, en PORT is enkel voor schrijven? PORTB.0 is altijd 1, want je schrijft hem als 1, dus hij zal altijd direct eindigen.

Overigens vind ik voor zulk soort dingen het vaak handig om juist iets van Arduino te pakken. Dan maak je gewoon een lusje die het tellen doet, en print je daarna naar de PC welke waarde eruit komt. Krijg je meer info dan enkel met twee LEDjes (of je gebruikt een debugger, maar gewoon printen naar serial vind ik dan vaak handiger).

Acties:
  • 0 Henk 'm!

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Verwijderd schreef op vrijdag 08 augustus 2014 @ 09:59:
ik snap je initialisatie niet.. doe je 2x voor poort B en verschillend en achter elkaar ?
ga er even goed naar kijken.. ben met wat andere dingen tegelijk (werk) bezig :)
De eerste is voor het naar 0 trekken van de poort, de 2e is voor het omhoog trekken vaan 5 volt :)
Ploink schreef op vrijdag 08 augustus 2014 @ 10:08:
Op welke frequentie draait je atmega? Aduino doet 16MHz, maar als je de default interne RC oscillator gebruikt met CLKDIV8 dan zit je op 1MHz en dat is misschien te langzaam.

Sluit anders even een condensatortje aan en kijk of dat wel effect heeft, bv 1nF.
Hij draait op 8 Mhz (als het goed is :P , dit moet ik even nakijken...) Goeie tip thanks.
Ik zal de 1nF ook even proberen. :)
Sissors schreef op vrijdag 08 augustus 2014 @ 10:18:
Nu zijn Atmegas al weer een tijdje geleden bij mij, maar poort lezen doe je toch met het PIN register, en PORT is enkel voor schrijven? PORTB.0 is altijd 1, want je schrijft hem als 1, dus hij zal altijd direct eindigen.

Overigens vind ik voor zulk soort dingen het vaak handig om juist iets van Arduino te pakken. Dan maak je gewoon een lusje die het tellen doet, en print je daarna naar de PC welke waarde eruit komt. Krijg je meer info dan enkel met twee LEDjes (of je gebruikt een debugger, maar gewoon printen naar serial vind ik dan vaak handiger).
Hmm daar begint me wat te dagen nu je het zegt.... Ik ga vanavond het eens proberen met PIN ipv PORT :X
En ik heb ook een seriele uitgang op het bordje zitten, die gebruik ik ook voor debugging :)

[ Voor 33% gewijzigd door Atlas op 08-08-2014 10:20 ]

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


Acties:
  • 0 Henk 'm!

Verwijderd

* en.. hoe is het nu afgelopen ?

[ Voor 93% gewijzigd door Verwijderd op 09-08-2014 10:12 ]


Acties:
  • 0 Henk 'm!

  • Seesar
  • Registratie: September 2002
  • Laatst online: 06-06 13:42

Seesar

Icon thnx to l0c4lh0st

laat maar, ik heb de oplossing gevonden; voor zover ik kan vinden, kan I2C niet met grotere data formaten dan bytes omgaan. M.a.w. je moet je 8+bits data opsplitsen en die dan in losse bytes versturen. Voor degene die nog met zo'n vraag zitten hoe je dat het makkelijkste doet hier de basis code:

de slave: vergaring van bijvoorbeeld 10bits data van een adc op je arduino:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
unsigned int  Truedata = 0b000000000000; //12bits vullen met 0-en

/*declaraties van hoge en lage byte die samen 16 bits vormen*/
uint8_t Truedatalow = 0; //laagste byte
uint8_t Truedatahigh = 0; //hoogste byte

unsigned int Truedatareworked = 0; 

/*dit is eigenlijk alleen nodig aan de masterzijde, maar ter debugging kun je deze vanuit je slave naar je serial.println sturen om te kijken of het inderdaad klopt dat truedatalow + truedatahigh weer netjes 0-1024 out geven.*/

int analogPin = 3;        //testen of er 10 bits info binnenkomt op pin A3

Truedata = analogRead(analogPin);    //laden van 10bits data 

/*constructie om je bits te verdelen over hoog en laag; ik begrijp deze constructie niet helemaal (geen zin om erover na te denken, maar hij werkt, zie bron: http://forum.arduino.cc/index.php?topic=84371.0*/

Truedatalow = Truedata & 0xff;  
Truedatahigh = (Truedata >>8);


en voor de master moet je dus je 2 bytes weer bij elkaar voegen tot 1 integer:

code:
1
2
3
4
5
6
7
8
9
if(Wire.available())
        { 
        incomearray[Indexer] = (uint8_t)Wire.read();
        Indexer++;
        
        /*ik heb op plaats 0 en 1 in het incomearray de 2 bytes gezet en die moeten weer samengevoegd     worden.  incomearray 1 heeft de high byte, incomearray 0 heeft de low byte.*/
        Truedatareworked = incomearray[1]* 256 + incomearray[0];
       Serial.println(Truedatareworked);
       }

[ Voor 119% gewijzigd door Seesar op 11-08-2014 00:46 ]

T60P Widescreen


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Seesar schreef op zondag 10 augustus 2014 @ 23:22:
laat maar, ik heb de oplossing gevonden; voor zover ik kan vinden, kan I2C niet met grotere data formaten dan bytes omgaan. M.a.w. je moet je 8+bits data opsplitsen en die dan in losse bytes versturen.
Inderdaad. Het protocol zegt namelijk:
After every 8 data bits in one direction, an "acknowledge" bit is transmitted in the other direction.
Als je per se meer data wilt versturen zul je een eigen communicatieprotocol moeten verzinnen. Je moet in ieder geval niet de standaard Wire library aan gaan passen omdat deze dan niet meer compatible is met andere i2c devices.

Acties:
  • 0 Henk 'm!

  • ComTech
  • Registratie: November 2002
  • Laatst online: 13:07
Iemand hier ervaring met een attiny85 icm arduino uno als ISP?
Tot dusver werkt het goed heb de blink sketch draaien op de attiny85 wel het poortnummer aangepast pin 13 heeft ie niet.
Maar nu probeer ik een pushbutton uit te lezen via een analoge ingang maar daarmee heb ik geen succes.
Welke pin(nen) zijn nu digitale ingangen?
En hoe defineer ik die in de code (welk nummer bij welke poort).
Op sommige schema's staat pin4 analoge input 2 bij pin3 op de attiny.

Afbeeldingslocatie: http://hlt.media.mit.edu/wiki/uploads/Main/attiny45_85pinout.png

Erg verwarrend.

[ Voor 6% gewijzigd door ComTech op 12-08-2014 21:19 . Reden: Kleine typfout ]


Acties:
  • 0 Henk 'm!

  • Seesar
  • Registratie: September 2002
  • Laatst online: 06-06 13:42

Seesar

Icon thnx to l0c4lh0st

Atlas schreef op vrijdag 08 augustus 2014 @ 09:34:
Kruispost vanuit de kroeg!

Ok ik niet snap meer :P

Ik probeer dit na te bouwen:
http://playground.arduino.cc/Code/CapacitiveSensor

Opstelling:
portb.0 is het draadje wat moet gaan dienen als sensor.
portb.1 is rode led
portb.2 is groene led

Werkwijze:
portb.0 als outgang schakelen naar ground trekken (dus naar 0 Volt).
portb.0 als ingang schakelen en interne pull-up inschakelen.
tijd meten dat het kost om naar 5 volt te gaan.

De volgende code heb ik gebruikt:
[code=c]
while (1)
{

teller = 0;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

delay_ms(1000);

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=P

DDRB=0xFE;
PORTB=0x01;

if (PORTB.0 == 1) (teller = 1);
else if (PORTB.0 == 1) (teller = 2);
else if (PORTB.0 == 1) (teller = 3);
else if (PORTB.0 == 1) (teller = 4);
else if (PORTB.0 == 1) (teller = 5);
else if (PORTB.0 == 1) (teller = 6);
else if (PORTB.0 == 1) (teller = 7);
else if (PORTB.0 == 1) (teller = 8);
else if (PORTB.0 == 1) (teller = 9);
else if (PORTB.0 == 1) (teller = 10);
else if (PORTB.0 == 1) (teller = 11);
else if (PORTB.0 == 1) (teller = 12);
else if (PORTB.0 == 1) (teller = 13);
else if (PORTB.0 == 1) (teller = 14);
else if (PORTB.0 == 1) (teller = 15);
else if (PORTB.0 == 1) (teller = 16);
else if (PORTB.0 == 1) (teller = 17);

if (teller == 1) PORTB.2 = 1;
if (teller == 2) PORTB.1 = 1;
if (teller == 3) PORTB.1 = 1;
if (teller == 4) PORTB.1 = 1;
if (teller == 5) PORTB.1 = 1;
if (teller == 6) PORTB.1 = 1;
if (teller == 7) PORTB.1 = 1;
if (teller == 8) PORTB.1 = 1;
if (teller == 9) PORTB.1 = 1;
if (teller == 10) PORTB.1 = 1;
if (teller == 11) PORTB.1 = 1;
if (teller == 12) PORTB.1 = 1;
if (teller == 13) PORTB.1 = 1;
if (teller == 14) PORTB.1 = 1;
if (teller == 15) PORTB.1 = 1;
if (teller == 16) PORTB.1 = 1;
// delay_ms(1000);


};


[/code=c]

Maar alleen het groene ledje gaat flikkeren, rood krijg ik niet te zien. En ik snap niet wat ik fout doe?
Als ik een multimeter op portb.0 zet zie ik hem van 0 naar 5 volt en weer terug gaan. Dus dat lijkt te werken.
Enige wat ik me nog kan voorstellen is dat ik een register zet met de portb.0 = 1, en dat ik dat register uitlees ipv de werkelijke poort.
Wie o wie wordt mijn heldt vandaag? :P Het gaat om een Atgema8 :)
Thanks!

(het gaat dus niet om een officiele Arduino, maar een eigengemaakt ding :P )
ik heb een tijdje geleden met RGB ledjes gepield, maar er zjn varianten dat bjiv alleen de R als cathode dient en rest anode, of anderzom; dus geen comon C/A voor de kleuren. Test ff met een losse 5v voeding + weerstand een voor een de kleuren alsof je een poort hoogzet.

T60P Widescreen


Acties:
  • 0 Henk 'm!

  • Atlas
  • Registratie: Mei 2002
  • Niet online

Atlas

Ik flits niet meer terug!

Het was idd pin ipv port.... Werkt nu prima! Thanks voor het meedenken allen :)

Join the dark side, we have cookies :)
You need only two tools. WD-40 and duct tape. If it doesn't move and it should, use WD-40. If it moves and shouldn't, use the tape.


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
ComTech schreef op dinsdag 12 augustus 2014 @ 21:16:
Iemand hier ervaring met een attiny85 icm arduino uno als ISP?
Tot dusver werkt het goed heb de blink sketch draaien op de attiny85 wel het poortnummer aangepast pin 13 heeft ie niet.
Maar nu probeer ik een pushbutton uit te lezen via een analoge ingang maar daarmee heb ik geen succes.
Welke pin(nen) zijn nu digitale ingangen?
En hoe defineer ik die in de code (welk nummer bij welke poort).
Op sommige schema's staat pin4 analoge input 2 bij pin3 op de attiny.

[afbeelding]

Erg verwarrend.
Deze link al gezien? (google: attiny85 arduino pin mapping)

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Nu online
Iemand die hiermee kan helpen: Hulp bij slimme meter uitlezen met Arduino naar MySQL ?

Uitlezen van de data lukt, maar het versturen naar MySQL nog niet.
Reacties graag in dat topic zodat het gecentraliseerd op één plek blijft ;)

  • JDTeunis
  • Registratie: Januari 2011
  • Laatst online: 16-09 09:34
Heeft er iemand ervaring met het gebruik van de arduino tone library icm met een servo of een andere library die PWM gebruikt?

Ik krijg de volgende foutmelding:
code:
1
2
3
4
5
Arduino: 1.5.6-r2 (Windows 8), Placa:"Arduino Uno"

Tone\Tone.cpp.o: In function `__vector_11':
C:\Users\abelha\Documents\Arduino\libraries\Tone/Tone.cpp:421: multiple definition of `__vector_11'
Servo\avr\Servo.cpp.o:C:\arduino-1.5.6-r2\libraries\Servo\src\avr/Servo.cpp:80: first defined here


Ik heb in de .h en .cpp files gezocht naar een definitie van '__vector_11', maar ik kon niks vinden. Het probleem zit 'm waarschijnlijk in de timers. De tones library gebruikt de timers terwijl PWM ook een timer nodig heeft (vermoed ik). Maar de ATMega328p heeft 3 timers, en zelfs als ik maar 1 tone gebruik werkt het niet, terwijl ik zou verwachten dat PWM 1 van de overige 2 timers zou kunnen gebruiken. Dus het lijkt erop dat de tone library alledrie de timers claimt, ongeacht van het aantal timers dat daadwerkelijk nodig is.

Alle suggesties zijn welkom! :)

  • Looney11
  • Registratie: December 2004
  • Laatst online: 17-09 06:47
Hallo allemaal,

Sinds kort probeer ik ook met de Arduino wat in elkaar te zetten, met wisselend succes haha. In dit geval probeer in een low-power datalogger te maken die temperatuursensors uitleest, niks wilds.

Ik maak gebruik van de code van seeedstudio stalker omdat daar de RTC interrupt routine voor mij makkelijk in een library is gegoten.

Het enige wara ik een beetje mijn hoofd over breek is de interrupt pin die wordt gedefinieerd. De Stalker gebruikt, net zoals ik, een 328p, draaiend op 8Mhz en 32Kb geheugen. So far so good.

Voor zover ik weet zijn INT0 en INT1 aan digitale pins 2 en 3 toebedeeld. Nu gebruik ik één van deze pinnen al voor mijn one-wire devices, ik geloof INT1.

Nu zie ik in de voorbeeldcode van de stalker staan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setup () 
{
     /*Initialize INT0 pin for accepting interrupts */
     PORTD |= 0x04; 
     DDRD &=~ 0x04;
     pinMode(4,INPUT);//extern power
   
     Wire.begin();
     Serial.begin(57600);
     RTC.begin();
     
     attachInterrupt(0, INT0_ISR, LOW); //Only LOW level interrupt can wake up from PWR_DOWN
     set_sleep_mode(SLEEP_MODE_PWR_DOWN);
 
     //Enable Interrupt 
     RTC.enableInterrupts(EverySecond); //interrupt at  EverySecond, EveryMinute, EveryHour
}


Wordt nu pin 4 als interrupt pin gezet of lees ik dit volledig verkeerd?

Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
Binnenkort maar eens aan de gang met hele kleine Arduino's, heb net een paar Femtoduino's besteld. :)
http://www.femtoduino.com/spex/femtoduino-usb

En van de week heb ik een LM393 schmitt-trigger circuit op prototype pcb gebouwd zodat ik een CNY70 digitaal kan aansluiten. Was wel makkelijk, had mbv de analoge waardes die een Arduino Nano gaf berekend wat de spanning is op de uitgang van de sensor. Daarna in Multisim de potmeter (aangesloten als variabele weerstand) net zo lang aangepast totdat er bij die analoge waardes geschakeld werd en de weerstand gemeten. Toen een (fysieke/niet gesimuleerde) 3296 potmeter aan een multimeter gehangen en op die waarde ingesteld.

Eenmaal gesoldeerd en aangesloten werkte de schakeling meteen goed :D , duidelijk te zien aan de led die ik er bij op had gezet om het detecteren van de markering op de draaischijfmeter weer te geven. Alleen nu nog een Arduino/Femtoduino eraan hangen, eens kijken of het digitaal aangesloten beter werkt dan analoog.

]hr]
Iets anders: Is het mogelijk om meerdere Rx'n aan dezelfde Tx van een Arduino te hangen? Dus bijv. zowel een bluetooth module als 433MHz transceiver aan dezelfde Tx pin, kan dat?

[ Voor 8% gewijzigd door Raven op 16-08-2014 12:54 ]

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Raven schreef op zaterdag 16 augustus 2014 @ 12:51:
Iets anders: Is het mogelijk om meerdere Rx'n aan dezelfde Tx van een Arduino te hangen? Dus bijv. zowel een bluetooth module als 433MHz transceiver aan dezelfde Tx pin, kan dat?
Geen idee wat je daar mee zou willen bereiken. Meer dingen aan 1 tx zou betekenen dat wat je verstuurt bij alle clients aankomt. Ik zou zeggen, probeer het eens uit.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72

Pagina: 1 ... 61 ... 96 Laatste