Acties:
  • 0 Henk 'm!

  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Zo wordt het projectje steeds complexer en duurder. Voor mij persoonlijk is het bordje alleen interessant als het heel goedkoop en heel simpel is (1 PCB bv). 8)

We do what we must because we can.


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Misschien alleen de traces en de aansluting maken voor een smd micro-usb op het pcb, kunnen mensen die hem er persee bij willen hebben, zelf aanschaffen en op solderen :)
Behuizing is voor mij ook niet nodig.

[ Voor 14% gewijzigd door alexandersamson op 24-12-2013 09:46 ]

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Mooi :D ik ben zelf ook voorstander van 1 board

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
mcDavid schreef op dinsdag 24 december 2013 @ 00:27:
Omdat Micro-USB het enige kabeltje is wat je nooit hoeft te zoeken omdat het altijd al klaar ligt.
O jah? :P Gewone heb ik een hele stapel van liggen, mini ook, micro heb ik er laatst maar een stel van besteld omdat de enige kabel die ik heb in de doos van mijn Logitech Harmony zit die ergens op zolder stof ligt te vangen.

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!

Verwijderd

wellicht beginnen met de vraag ' wat mag het kosten' en 'wat moet die kunnen voor dat geld '

- 50,-
- alles 8)


maar een 'basis' print met wat componenten om te starten is ook prima zodat je later kan uitbreiden ?

[ Voor 31% gewijzigd door Verwijderd op 24-12-2013 11:08 ]


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Bij 5 boards kom ik uit op 18 euro per board inclusief alle componenten.
Bij 10 duikt te de prijs richting de 13 euro.

Uiteraard komen daar nog verzendkosten bij

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

Verwijderd

18,- 'basisboard' dus

zitten daar 2 flatkabeltjes met connectors bij ?

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Nee dat is zonder de isp kabels dan komt er nog iets van 4 euro bij

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 22:03
Ik heb hier een arduino nano (een kloon: meduino die op 3.3V draait) die ik gebruik om m'n domitca bus in de gaten te houden en eveneens het stroomverbruik te meten via 3CT klemmen en een ac/ac adapter (openengerymonitor).

Nu werken beide stukken software goed op zichzelf:
- domotica: luisteren naar de seriele poort op commando's en eveneens de bus (2 digitale pinnen) in de gaten houden via een interrupt.
- openenergymonitor: continu de waardes van 4 analoge sensoren uitlezen: 3x ct en 1xac/ac adapter en hiermee het acturele stroomverbruik op de 3 fases berekenen (gebruikt millis())

Als ik ze echter cobineer zorgt een activatie van de interrupt dat de arduino vastloopt...
De code van de interrupt is : aangezet via attachInterrupt(0, NB_get_bus, RISING); in de setup()
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 NB_get_bus() //starts when puls is going high
{ 
  detachInterrupt(0); //uitzetten zodat we geen interferentie krijgen
  unsigned long puls;
  unsigned long knop = 0;
  knop=0;
  do 
  {  puls = pulseIn(NB_Bus_in, LOW,3600);                    // wait until pin gets low, then time the low pulse
  }while (!((puls>2310)&&(puls<3850))&&!(puls==0)) ;         // loop until start pulse is passed, deze is tussen 300*10 en 320*10 lang
  do 
  {  puls = pulseIn(NB_Bus_in, LOW,3600);                    // loop om de eerste reeks te vermijden en de 2e reeks in te lezen - fouten in de eerste?
  }while (!((puls>3000))&&!(puls==0)) ;                      
  puls = pulseIn(NB_Bus_in, LOW,3600);
  puls = pulseIn(NB_Bus_in, LOW,3600);
  puls = pulseIn(NB_Bus_in, LOW,3600);
  for (int NB_i=1;NB_i<=24;NB_i++)                        // er zijn 24 bits uit te lezen
     { puls = pulseIn(NB_Bus_in, LOW,3600);
        knop=knop << 1;
       if (puls<=1000&&puls!=0){knop|=0b1;}
    }
    for (int NB_i=1;NB_i<=50;NB_i++)                        // hiermee lezen we de 3e reeks in, en eventuele achterkomende dingen, we doen dit zodat deze niet de interrupt triggeren
     { puls = pulseIn(NB_Bus_in, LOW,3600);
            }
 
  if(knop != 0) busJ=knop; //dit is een algemene variabele en kunnen we altijd uitlezen
  Serial.print("N:");
  Serial.println(busJ,HEX); //om te testen - uitzetten in definitieve versie
  attachInterrupt(0, NB_get_bus, RISING);  
}


Heeft er iemand een idee hoe dit zou komen? Enige alternatief die ik zie is het geheel opsplitsen over 2 meduino's. Is het in dat geval een goed idee om die gewoon 1 op 1 door te verbinden voor 5V / gnd / een aantal analoge poorten (deze worden toch niet gebruikt op de andere)

Acties:
  • 0 Henk 'm!

Verwijderd

laat is een stukkie zien van je main loop waarin hij terecht komt.
delay(xx) en millis(xx) kunnen problemen geven wanneer je weer uit je interrupt komt.
die waarden zou je dan eerst even op moeten slaan en terugzetten bij verlaten ISR

[ Voor 7% gewijzigd door Verwijderd op 24-12-2013 16:17 ]


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 22:03
tis een hele lap code (van openenergymonitor), maar hier is de subroutine die aangeroepen wordt vanuit de main loop (enige andere die er nog instaat is een delay(100) en het serieel printen van de resultaten

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
174
175
176
177
178
179
void calcVI3Ph(int cycles, int timeout)
{
    int SupplyVoltage = readVcc();
    int crossCount = 0;                                     // Used to measure number of times threshold is crossed.
    int numberOfSamples = 0;                                // This is now incremented  
    int numberOfPowerSamples = 0;                           // Needed because 1 cycle of voltages needs to be stored before use
    boolean lastVCross, checkVCross;                        // Used to measure number of times threshold is crossed.
    double storedV[PHASE3];                                 // Array to store >120 degrees of voltage samples
    
    //-------------------------------------------------------------------------------------------------------------------------
    // 1) Waits for the waveform to be close to 'zero' (500 adc) part in sin curve.
    //-------------------------------------------------------------------------------------------------------------------------
    boolean st=false;                                       // an indicator to exit the while loop

    unsigned long start = millis();                         // millis()-start makes sure it doesnt get stuck in the loop if there is an error.

    while(st==false)                                        // Wait for first zero crossing...
    {
        startV = analogRead(inPinV);                        // using the voltage waveform
        if ((startV < 550) && (startV > 440)) st=true;      // check it's within range
        if ((millis()-start)>timeout) st = true;
    }
  
    //-------------------------------------------------------------------------------------------------------------------------
    // 2) Main measurment loop
    //------------------------------------------------------------------------------------------------------------------------- 
    start = millis(); 

    while ((crossCount < cycles * 2) && ((millis()-start)<timeout)) 
    {

        lastSampleV=sampleV;                                // Used for digital high pass filter - offset removal
        lastSampleI1=sampleI1;
        lastSampleI2=sampleI2;
        lastSampleI3=sampleI3;
    
        lastFilteredV = filteredV;
        lastFilteredI1 = filteredI1;  
        lastFilteredI2 = filteredI2; 
        lastFilteredI3 = filteredI3;
    
        //-----------------------------------------------------------------------------
        // A) Read in raw voltage and current samples
        //-----------------------------------------------------------------------------
        sampleV = analogRead(inPinV);                       // Read in raw voltage signal
        sampleI1 = analogRead(inPinI1);                     // Read in raw current signal
        sampleI2 = analogRead(inPinI2);                     // Read in raw current signal
        sampleI3 = analogRead(inPinI3);                     // Read in raw current signal

        //-----------------------------------------------------------------------------
        // B) Apply digital high pass filters to remove 2.5V DC offset (to centre wave on 0).
        //-----------------------------------------------------------------------------
        filteredV = 0.996*(lastFilteredV+sampleV-lastSampleV);
        filteredI1 = 0.996*(lastFilteredI1+sampleI1-lastSampleI1);
        filteredI2 = 0.996*(lastFilteredI2+sampleI2-lastSampleI2);
        filteredI3 = 0.996*(lastFilteredI3+sampleI3-lastSampleI3);
   
        storedV[numberOfSamples%PHASE3] = filteredV;        // store this voltage sample in circular buffer

        if (crossCount > 2)                                 // one complete cycle has been stored, so can use delayed 
        {                                                   //    voltage samples to calculate instantaneous powers
            //-----------------------------------------------------------------------------
            // C) Root-mean-square method voltage
            //-----------------------------------------------------------------------------  
            sqV= filteredV * filteredV;                         //1) square voltage values
            sumV += sqV;                                        //2) sum

            //-----------------------------------------------------------------------------
            // D) Root-mean-square method current
            //-----------------------------------------------------------------------------   
            sqI1 = filteredI1 * filteredI1;                     //1) square current values
            sumI1 += sqI1;                                      //2) sum 
            sqI2 = filteredI2 * filteredI2;
            sumI2 += sqI2;
            sqI3 = filteredI3 * filteredI3;
            sumI3 += sqI3;

            //-----------------------------------------------------------------------------
            // E) Phase calibration - for Phase 1: shifts V1 to correct transformer errors
            //  for phases 2 & 3 delays V1 by 120 degrees & 240 degrees respectively 
            //  and shifts for fine adjustment and to correct transformer errors.
            //-----------------------------------------------------------------------------
            phaseShiftedV1 = lastFilteredV + Phasecal1 * (filteredV - lastFilteredV);
            phaseShiftedV2 = storedV[(numberOfSamples-PHASE2-1)%PHASE3] 
                + Phasecal2 * (storedV[(numberOfSamples-PHASE2)%PHASE3] 
                             - storedV[(numberOfSamples-PHASE2-1)%PHASE3]);
            phaseShiftedV3 = storedV[(numberOfSamples+1)%PHASE3] 
                + Phasecal3 * (storedV[(numberOfSamples+2)%PHASE3]
                             - storedV[(numberOfSamples+1)%PHASE3]);
            
    
            //-----------------------------------------------------------------------------
            // F) Instantaneous power calc
            //-----------------------------------------------------------------------------   
            instP1 = phaseShiftedV1 * filteredI1;           //Instantaneous Power
            sumP1 +=instP1;                                 //Sum  
            instP2 = phaseShiftedV2 * filteredI2;
            sumP2 +=instP2;
            instP3 = phaseShiftedV3 * filteredI3;
            sumP3 +=instP3;
            
            numberOfPowerSamples++;                         //Count number of times looped for Power averages.

        }
        
        //-----------------------------------------------------------------------------
        // G)  Find the number of times the voltage has crossed the initial voltage
        //      - every 2 crosses we will have sampled 1 wavelength 
        //       - so this method allows us to sample an integer number of half wavelengths which increases accuracy
        //-----------------------------------------------------------------------------       
        lastVCross = checkVCross;                     
        if (sampleV > startV) 
            checkVCross = true; 
        else 
            checkVCross = false;
        if (numberOfSamples==1)
            lastVCross = checkVCross;                  
                    
        if (lastVCross != checkVCross)
            crossCount++;
        
        numberOfSamples++;                                  //Count number of times looped.
            
    }
 
    //-------------------------------------------------------------------------------------------------------------------------
    // 3) Post loop calculations
    //------------------------------------------------------------------------------------------------------------------------- 
    //Calculation of the root of the mean of the voltage and current squared (rms)
    //Calibration coefficients applied. 
  
    double V_Ratio = Vcal *((SupplyVoltage/1000.0) / 1023.0);
    Vrms = V_Ratio * sqrt(sumV / numberOfPowerSamples); 
  
    double I_Ratio1 = Ical1 *((SupplyVoltage/1000.0) / 1023.0);
    Irms1 = I_Ratio1 * sqrt(sumI1 / numberOfPowerSamples); 
    double I_Ratio2 = Ical2 *((SupplyVoltage/1000.0) / 1023.0);
    Irms2 = I_Ratio2 * sqrt(sumI2 / numberOfPowerSamples); 
    double I_Ratio3 = Ical3 *((SupplyVoltage/1000.0) / 1023.0);
    Irms3 = I_Ratio3 * sqrt(sumI3 / numberOfPowerSamples); 

    //Calculation power values
    realPower1 = V_Ratio * I_Ratio1 * sumP1 / numberOfPowerSamples;
    apparentPower1 = Vrms * Irms1;
    powerFactor1 = realPower1 / apparentPower1;

    realPower2 = V_Ratio * I_Ratio2 * sumP2 / numberOfPowerSamples;
    apparentPower2 = Vrms * Irms2;
    powerFactor2 = realPower2 / apparentPower2;

    realPower3 = V_Ratio * I_Ratio3 * sumP3 / numberOfPowerSamples;
    apparentPower3 = Vrms * Irms3;
    powerFactor3 = realPower3 / apparentPower3;

    //Reset accumulators
    sumV = 0;
    sumI1 = 0;
    sumI2 = 0;
    sumI3 = 0;
    sumP1 = 0;
    sumP2 = 0;
    sumP3 = 0;
    //--------------------------------------------------------------------------------------       

#ifdef DEBUGGING
    // Include these statements for development/debugging only
    
    Serial.print("Total Samples: "); Serial.print(numberOfSamples);
    Serial.print(" Power Samples: "); Serial.print(numberOfPowerSamples);
    Serial.print(" Time: "); Serial.print(millis() - start);
    Serial.print(" Crossings: "); Serial.println(crossCount);

    for (int j=0; j<PHASE3; j++)
    {
        Serial.print(storedV[j]); Serial.print(" ");
        Serial.println();
    }
#endif
}

Acties:
  • 0 Henk 'm!

Verwijderd

beide stukjes code zijn nogal timings gevoelig en laten zich niet (eenvoudig) combineren
op het moment dat je in je interrupt routine komt staat de millis teller in de 'openenergymonitor stil

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
PulseIn is sowieso geen goede om te gebruiken in interrupts (over het algemeen). Die blokkeert namelijk waardoor je microcontroller vast zit in een interrupt routine en in die tijd niks anders kan doen.

Maar makkelijkere vraag: Hoever komt hij? Doet hij de laatste prints in de interrupt? In het geval van nee, als je ze wat eerder erin zet, tot hoever komt hij?

Acties:
  • 0 Henk 'm!

Verwijderd

SnowDude schreef op dinsdag 24 december 2013 @ 13:23:
Nee dat is zonder de isp kabels dan komt er nog iets van 4 euro bij
tja, ik laat de uitvoering aan jou over, persoonlijk wil een zo uitgebreid mogelijke multi programmer, tot en met net adapter en kabeltjes toe 8)
een ander zo uitgekleed en goedkoop mogelijk, laat maar weten als je zover ben en hoe of wat kwa betalen _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

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

deze oude klok krijgt digitaal arduino binnenwerk
daarvoor moet ik nog wel een keurige cirkel plexiglas/rookglas zien te maken, iemand tips 8)

* gevonden

[ Voor 13% gewijzigd door Verwijderd op 31-12-2013 11:23 ]


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Afbeeldingslocatie: http://www.gm7.nl/wp-content/uploads/2013/12/20131224_191003-1024x576.jpg

Hier ben ik nu mee bezig. Alleen heb een probleem met de I2C naar die teensy2++ toe. Als ik de traces volg lijkt alles te kloppen, hij vertraagt ook de bus, maar er komt geen data over... rara wat is er loos (to be continued...)

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

adres van I2C device klopt ?
dat kan je ff nagaan met deze code :


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
#include <Wire.h>

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// 
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
      //Serial.println(address);
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    
    Wire.beginTransmission(address);
    //Serial.println(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}


via de terminal kan je dan zien of er wel een I2C device gezien wordt en op welk adres

Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Deze moet ik even op de master zetten dus, als ik het goed begrijp?
(heb 5 chips op dat bord namelijk, waaronder 1 master)

EDIT-Al uitgevogeld.


Ik krijg het volgende:

Scanning...
I2C device found at address 0x04 !
I2C device found at address 0x05 !
I2C device found at address 0x06 !
I2C device found at address 0x07 !
done

Hij ziet dus al mijn chips :), adressen kloppen ook... hmmm raar

[ Voor 53% gewijzigd door alexandersamson op 24-12-2013 19:24 ]

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

uhhhhhhhh .. master ?

ik denk het wel.. gewoon even uploaden en starten, dan je serial monitor (9600) aanzetten

[ Voor 3% gewijzigd door Verwijderd op 24-12-2013 19:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

mosi en miso omgedraaid ?
clk ok


oeps.. kerstborrel.. je weet tog :F

[ Voor 34% gewijzigd door Verwijderd op 24-12-2013 19:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

opletten.. soms heb je voor 1 device 2 adressen, als er vb nog wat ram aanwezig is

Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
'tis I2C, geen SPI :P

Die hebben SCK en SDA.

Zijn niet omgedraaid

Verklaar die laatste post eens nader?

[ Voor 22% gewijzigd door alexandersamson op 24-12-2013 19:27 ]

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

heb hier een klokmodule.. die geeft 2 I2C adressen terug.. je kan de ram op dat bordje apart via I2c benaderen.
ik weet dus niet wat er bij jou 'aanhangt

Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Dit zijn 3 x 328's en een 90USB1286. De master is een 328 en heeft geen bekend adres. De adressen van de rest zijn 4, 5, 6 en 7 (handmatig opgegeven) Dat tooltje dat je me stuurde, lijkt dus wel de devices juist te vinden.

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Ohh wacht... lololol je zei iets over klokmodule. Stom van mij. m'n master maakte gebruik van een puls van een RTC die ik tijdens de breadbordfase wel had aangesloten, maar nu op de definitieve fase nog niet. Zonder die klokpuls wordt de data van de 90USB1286 niet gelezen!

Had je niet kunnen weten, maar je hebt mij indirect toch wel enorm geholpen door je 'klokmodule' haha

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

hahaha proost !

Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
cheers *gaat nog een stukje verder solderen ;)

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Hij werkt nu prima :) packetrate van 9,2kB/s over de gehele bus :P

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Had vandaag weer wat tijd om aan mijn nrf24 netwerk te werken. :) Heb zo kaal mogelijke arduino gemaakt, 8mhz, met opti bootloader zodat watchdog tenminste ook werkt. En heb RF24 lib wat aangepast zodat die data naar TFT stuurt ipv alleen naar de serial poort. Is nog test opstelling, als alles goed werkt bestel ik 10 printjes van 5x5cm, daar passen wel twee nodes op, door printje doormidden te zagen zal dus 20 node krijgen, bij seeedstudio mag je er 5 op printje(panelization maar dan zonder routing zeg maar, rijtjes gaten of routing zodat printjes kan breken of zo dat mag dus niet).

Node

Wat kan je hoop tekst kwijt op zo TFT, gebruik veel 2x16 (char.) en 64x128(pixel), 240x320(pixel) is toch wel weer wereld van verschil, tekst word wel erg klein.
TFT nrf24 base unit
Verwijderd schreef op dinsdag 24 december 2013 @ 19:28:
heb hier een klokmodule.. die geeft 2 I2C adressen terug.. je kan de ram op dat bordje apart via I2c benaderen.
ik weet dus niet wat er bij jou 'aanhangt
Komt omdat er nog de 24c chipje opzit, eeprom heeft eigen adres.

@alexandersamson
Heb heb je iets van logic analyzer of scoop? Handigste is gewoon eerst i2c bus bekijken wat eruit komt en of er überhaupt iets uitkomt.

[ Voor 19% gewijzigd door mad_max234 op 24-12-2013 23:37 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

Verwijderd

ziet er top uit.. ik overweeg ook zoiets om de buiten temp te meten en binnen uit te lezen.
dan moet er nog wel een klein zonnepaneeltje en ladertje bij komen 8)

[ Voor 28% gewijzigd door Verwijderd op 24-12-2013 23:41 ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 21-09 12:22
mad_max234 schreef op dinsdag 24 december 2013 @ 23:18:

Wat kan je hoop tekst kwijt op zo TFT, gebruik veel 2x16 (char.) en 64x128(pixel), 240x320(pixel) is toch wel weer wereld van verschil, tekst word wel erg klein.
[afbeelding]
Kun je zo'n ding een beetje aansturen met een microcontroller? Alleen voor tekst neem ik aan...

Heb zelf een 240x400 schermpje besteld voor aan de RPi, ben benieuwd of ik daar een beetje bewegend beeld op kan krijgen.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Ik ga overal van alles meten, niet dat het zo nodig is maar omdat het leuk is. :)

Komt eentje in de bievenbus met reedrelay en magneetje zodat ik weet wanneer de postboden is geweest.
Heb in zomer altijd veel planten in de tuin, ga daar vochtigheid van aarde meten en temperatuur van de potten. En uiteaard buitentemperatuur, luchtvochtigheid, luchtdruk, wellicht maak ik ook nog regenmeter en windmeter, of koop ze kant en klaar. :)
mcDavid schreef op dinsdag 24 december 2013 @ 23:44:
[...]


Kun je zo'n ding een beetje aansturen met een microcontroller? Alleen voor tekst neem ik aan...

Heb zelf een 240x400 schermpje besteld voor aan de RPi, ben benieuwd of ik daar een beetje bewegend beeld op kan krijgen.
Bewegende beelden kunnen ook, alleen niet zo hoog framerate. En hoe hoger de resolutie des te lastiger word het. Foto's weergeven vanaf een SD kaart gaat ook prima. Het is vol grafische TFT, je kan er dus ook alles mee wat va grafisch lcd mag verwachten.

Zie bijv youtube voor voorbeelden, heb er even twee willekeurige gepakt, er zijn nog meer filmpjes.
YouTube: Arduino and 2.2'' Serial TFT ILI 9341
YouTube: Arduino TFT xmem graphics library full demo

[ Voor 51% gewijzigd door mad_max234 op 24-12-2013 23:53 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

Verwijderd

wat is dat voor een celletje en hoe laad je die ?

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Dat is lipo, 240mAh, 30C.

Laad je op met lipo lader, voor single cell is simpele usb lader voldoende.
http://www.ebay.com/itm/N...ain_0&hash=item5d36edbb16

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
@max,

Probleem is al opgelost, lag aan een fout dat ik een RTC was vergeten aan te sluiten die de 'heartbeat' is van de datastroom berekening. Omdat die mistte, leek de I2C gewoon te werken en kreeg ik zelfs adressen door enzo, maar een stuk functionaliteit mistte. Is nu opgelost. Ik heb inderdaad een logic analyzer, maar ben daar nog nieuw mee, heb dat ding pas een paar dagen, dus nog wat te leren haha :)

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

@ max

wow.. dat usb lipo laderprintje is een koopje !

jij weet altijd de goedkoopste plekjes.. waar haal je die lipo zelf .. want die worden meestal niet verzonden uit china.
en ik wil evt. wel wat printjes meebestellen.. maar ik ben te kippig om smd te solderen 8)

[ Voor 20% gewijzigd door Verwijderd op 25-12-2013 12:19 ]


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
@alexander
Logic analyzer is bijna onmisbare tool als je in de weer gaat met i2c, spi, usart, ir. Kan wel zonder maar dan loop je vaak onnodig lang te zoeken, even naar bus kijken en je weet zo welke data eruit komt. Was mooie opperunitie geweest om analyzer voor eerst te testen. :)

@borroz
Lipo verzenden ze gewoon vanuit china, heb nu drie keer aantal gekocht en zijn tot nu toe altijd aangekomen, koop ze meestal per 2, sloop ze namelijk nog wel eens, mag ze niet onder 2.5v laten zakken en mag ze niet aluminiumfolie mag je niet beschadigen, want dan drogen ze uit.

18650 cellen zijn wat robuuster en bevatten heel wat meer power, die gebruik ik ook geregeld, zijn ook lithium en te laden met usb lader.

Je kan zo een usb lader ook aan zonnecel hangen, lader werkt tussen 4 en 8v volt, dat is bruikbaar range voor zonnecel.

Heb deze 240mAh lipo van deze ebay store, eddiestore2008. (edit: mail hem maar eerst even of ze ze nog hebben staat namelijk: 50 available / 122 sold. Al zegt dat niet altijd wat, vaak is dat foutje en gaat het gewoon om product wat ze oneindig beschikbaar hebben en vast in hun aanbod zit)
http://www.ebay.com/itm/2...ories&hash=item53ff0a3e1d

Edit/
Wil je ook van die nrf24 nodes(arduino printje, niet de nrf24 transceiver) printjes hebben? Was eigenlijk voor mezelf bedoeld maar kan er wel paar missen. Ik wil wel voor je de atmeg328 erop zetten. Maar zal nog wel even paar weken duren, ben eerst nog wat aan testen, dan moet ik het printje ontwerpen, dan alles klaar maken om naar fabriek te zenden, dan twee a drie weken wachten voordat ze aankomen.

[ Voor 24% gewijzigd door mad_max234 op 25-12-2013 13:51 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 21-09 12:22
Dat betekent gewoon dat ze er 172 te koop gezet hebben en er tot nu toe 122 verkocht hebben :P

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Dacht dat het niet zo werkte, 50 available stond er ook al weken terug toen ik ze bestelde en toen waren er pas 23 sold. Moet toe geven dat ik er niet heel erg oplet, ik ga het even in de gaten houden want deze lipo's kunnen zomaar twee of meer keer in store hebben gestaan of dat dit gewoon alweer nieuwe ronde is.

Ik hou deze link even in de gaten, zal straks staat 50 available / 123 sold of 49 available / 123 sold dan weten we het zeker. :)

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Hallo en prettige kerst iedereen <+:)

Vandaag bezig geweest met een DS1307 volgens deze website :
http://tronixstuff.com/20...th-arduino-chapter-seven/
Dat ging allemaal prima alleen ik krijg met een usb-scoopje geen sqw in beeld.
Ik heb deze module :
Afbeeldingslocatie: http://iw.suntekstore.com/disimage.php?id=14006824&img=image.jpg
Ik gebruik de rechterkant, links heb ik geen pinheader zitten.
De rechterkant heeft VCC, GND, SCL, SDA en DS.
Waar is DS voor ?
Ik zie dat helemaal niet op de datasheet ?
http://tronixstuff.com/wp...0/05/maxim-ds1307-rtc.pdf
Ik meet daar met de scoop een constante 5V
Dat bij mij de SQW niet werkt komt misschien omdat de website een andere schakeling gebruikt als mijn module :
Afbeeldingslocatie: http://i0.wp.com/tronixstuff.com/wp-content/uploads/2010/05/ds1307exampleuse1.jpg
Of beter gezegd, aan de kant van de module die ik gebruik om aan te sluiten zit helemaal geen SQW.
Nu is mijn vraag, als ik nu op de rechterkant een pinheadertje soldeer kan ik die kant dan precies hetzelfde gebruiken als de linkerkant ?
Ik heb maar één module anders zou ik het gerust zelf even uit proberen maar nu ben ik liever wat voorzichtiger.
Bijgeleverde documentatie bij die module geeft slechts de datasheet van de ds1307 en geen uitleg over waarom er aan 2 kanten aansluitingen zitten of wat die doen.
Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
Die P2 is zo te zien voor het doorlussen van de I2C bus, zodat je op P2 een ander I2C apparaat aan kan sluiten waarna de verbinding via de DS1307 naar de Arduino gaat.

edit: Net de datasheet bekeken, de pin-beschrijvingen komen niet eens helemaal overeen :?

edit2: Zit er een tempsensor op dat ding? Zie dan http://www.hobbyist.co.nz/?q=real_time_clock , ctrl+f'en naar Arduino Tiny RTC I2C Real Time Clock Pinout.

[ Voor 46% gewijzigd door Raven op 25-12-2013 15:20 ]

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!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Raven schreef op woensdag 25 december 2013 @ 15:10:
Die P2 is zo te zien voor het doorlussen van de I2C bus, zodat je op P2 een ander I2C apparaat aan kan sluiten waarna de verbinding via dat printje naar de Arduino gaat.
Dus, als ik je goed begrijp is het dus niet zo dat ik P2 gewoon hetzelfde kan gebruiken als P1 ?
edit: Net de datasheet bekeken, de pin-beschrijvingen komen niet eens helemaal overeen :?
Tja, ik tel er acht
X1, X2 voor kristal
VCC, GND, SDA, SCL
SQW
en dan een pennetje 3 voor VBatt.

Maar geen DS ?

Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
P2 moet je als een doorlusaansluiting zien. Bij I2C dingen moet je altijd P1 gebruiken voor verbinding met de microcontroller (Arduino) en P2 voor de verbinding met een 2e I2C printje. Al zou het aansluiten van P2 op de Arduino misschien wel kunnen werken, maar zo hoort het iig niet :P

DS kun je op de pagina in edit2 van mijn vorige bericht vinden ;) Die behoort tot de andere chip op dat printje, de pinlayout die in de datasheet staat gaat alleen over de rtc, niet over dat andere chipje.

[ Voor 37% gewijzigd door Raven op 25-12-2013 15:24 ]

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!

Verwijderd

@ mad_max234

' Wil je ook van die nrf24 nodes(arduino 328 + printje) '

ja graag.. indien dat mag wil ik wel een paar meebestellen.
het voordeel van jou printje zijn natuurlijk de afmetingen (anders moet ik op expi print een normale 328 monteren) en de lage spanning van die smd versie waardoor de lipo's ook klein blijven.
als je zover ben DM me even.. bvd

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Bedankt voor die link zeg.
Er schiet me ineens wat te binnen, bij P1 P2 zitten 3 aansluitingen die niet gebruikt worden. zie afb vorige post.
Grote kans dat 1 daarvan misschien sqw is.
Ga zometeen proberen met krokodillenklem erop

[ Voor 4% gewijzigd door kitao op 25-12-2013 15:34 . Reden: foutje P1/P2 ]


Acties:
  • 0 Henk 'm!

Verwijderd

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

ik had nog een paar temp sensors type LM35 liggen.
gelijk even uitgeprobeerd een kind kan de was doen ;)

- http://www.instructables....-TEMPERATURE-SENSOR-LM35/
- http://playground.arduino.cc/Main/LM35HigherResolution

zoekende naar een datasheet kwam ik deze leuke toepassing tegen, gebouwd met processing, waardoor je je arduino data grafisch weer kan geven op een PC via serial.

Afbeeldingslocatie: http://i.imgur.com/0rZGoIU.jpg
de processing editor ziet er hetzelfde uit als die van arduino, de code draait op de PC.

[ Voor 51% gewijzigd door Verwijderd op 26-12-2013 17:21 ]


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
kitao schreef op woensdag 25 december 2013 @ 15:28:
Bedankt voor die link zeg.
Er schiet me ineens wat te binnen, bij P1 P2 zitten 3 aansluitingen die niet gebruikt worden. zie afb vorige post.
Grote kans dat 1 daarvan misschien sqw is.
Ga zometeen proberen met krokodillenklem erop
Is het niet makkelijker om de spoortjes te volgen of er een multimeter met doormeetstand (piepstand noem ik het :P ) op aan te sluiten om te kijken waar die SQ pin mogelijk mee verbonden is?

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!

Verwijderd

kitao schreef op woensdag 25 december 2013 @ 14:55:
Hallo en prettige kerst iedereen <+:)
jij ook en bij deze mijn kersttip om veel ergenis te voorkomen :+

Afbeeldingslocatie: http://i.imgur.com/98eFbwb.jpg

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Raven schreef op woensdag 25 december 2013 @ 15:57:
[...]

Is het niet makkelijker om de spoortjes te volgen of er een multimeter met doormeetstand (piepstand noem ik het :P ) op aan te sluiten om te kijken waar die SQ pin mogelijk mee verbonden is?
Ja, goeie tip.
Net gedaan, hoewel wat lastig met smd.
Echter, ik krijg nog steeds geen blokgolf op de scoop. Die staat met probe op de sqw en de andere op Gnd.
Zou je toch verwachten dat je dan wat in beeld krijgt.
Ik heb toch nog een andere rtc gevonden, dat is deze :
http://www.ebay.com/itm/D...ain_0&hash=item4d03e98fe9
Die heeft wel sqw en slechts één rij aansluitingen. Tijd werkt maar eveneens geen sqw in beeld.

Dusss......, of het ligt aan mijn instellingen/aansluitingen van de scoop of het programma is gammel :
C++:
1
2
Wire.write(00010000); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
  Wire.endTransmission();


Trouwens Raven, in jouw link wordt juist P1 gebruikt om op uno aan te sluiten en niet P2 zoals ik heb :
Afbeeldingslocatie: http://www.hobbyist.co.nz/sites/default/files/pictures/RTClock/Arduino2RTC.jpg
Dus het kan toch allebei.

En dan nog iets, als ik seriele monitor open zie ik de tijd.
Sluit ik de monitor en open ik die opnieuw begint de tijd weer opnieuw ?!!
Ik wist niet dat die monitor een reset functie had ? :?

@Borroz :D
Ik vind het wel meevallen hoor, tijd loopt nog steeds goed.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Verwijderd schreef op woensdag 25 december 2013 @ 16:13:
[...]


jij ook en bij deze mijn kersttip om veel ergenis te voorkomen :+

[afbeelding]
Of wat je van elektronicahobbyist zou verwachten pas je hem aan zodat die wel doet wat je wilt. Kwestie van twee pootjes solderen van nieuwe kristal en hij doet het prima. En beteken ook niet dat alle printjes zo slecht zijn, zitten grote variaties in goedkope kristallen een op de zoveel wijkt gewoon gigantisch af en de rest wijkt beetje af, veel geld word er niet besteedt aan sorteren van dit soort goedkope onderdelen.

Gebruik ook wel eens chinezen kristallen, klok zit er meestal minuutje naast per maand, maar dat kan je prima in software corrigeren, weet immer hoeveel die afwijkt.

[ Voor 27% gewijzigd door mad_max234 op 25-12-2013 17:30 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online
kitao schreef op woensdag 25 december 2013 @ 17:09:
[...]

Ja, goeie tip.
Net gedaan, hoewel wat lastig met smd.
Echter, ik krijg nog steeds geen blokgolf op de scoop. Die staat met probe op de sqw en de andere op Gnd.
Zou je toch verwachten dat je dan wat in beeld krijgt.
Ik heb toch nog een andere rtc gevonden, dat is deze :
http://www.ebay.com/itm/D...ain_0&hash=item4d03e98fe9
Die heeft wel sqw en slechts één rij aansluitingen. Tijd werkt maar eveneens geen sqw in beeld.

Dusss......, of het ligt aan mijn instellingen/aansluitingen van de scoop of het programma is gammel :
C++:
1
2
Wire.write(00010000); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave
  Wire.endTransmission();


Trouwens Raven, in jouw link wordt juist P1 gebruikt om op uno aan te sluiten en niet P2 zoals ik heb :
[afbeelding]
Dus het kan toch allebei.

En dan nog iets, als ik seriele monitor open zie ik de tijd.
Sluit ik de monitor en open ik die opnieuw begint de tijd weer opnieuw ?!!
Ik wist niet dat die monitor een reset functie had ? :?
Dat klopt, P1 hoort gebruikt te worden, P2 alleen voor doorlussen, al werkt P2 blijkbaar wel aangesloten op de Arduino? En dat met de seriële monitor heb ik ook wel eens gemerkt, leesvoer: http://playground.arduino...toResetOnSerialConnection

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!

Verwijderd

ja ik heb had ook even 'aangepast' ... na uren ellende op de bus :)
maar goed, er zitten wellicht ook goede exemplaren tussen 8)

[ Voor 33% gewijzigd door Verwijderd op 25-12-2013 17:43 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Raven schreef op woensdag 25 december 2013 @ 17:37:
Dat klopt, P1 hoort gebruikt te worden, P2 alleen voor doorlussen, al werkt P2 blijkbaar wel aangesloten op de Arduino?
Ja, zo zit het al een jaar of meer.
Toen ik dat ding kreeg zat er maar ene pinheader bij met 5 pootjes dus die heb ik op P2 gezet.
En sindsdien gebruikt.

Ps, en weer bedankt voor de link.
Maar dat wordt morgen, ben er klaar mee voor vandaag ;)

Ps2
Dit staat in jouw link :
The most useful pins are duplicated from P1 to P2.

Die pennetjes zijn gewoon duplicaatjes

[ Voor 21% gewijzigd door kitao op 25-12-2013 17:56 ]


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
kitao schreef op woensdag 25 december 2013 @ 17:45:
[...]


Ja, zo zit het al een jaar of meer.
Toen ik dat ding kreeg zat er maar ene pinheader bij met 5 pootjes dus die heb ik op P2 gezet.
En sindsdien gebruikt.

Ps, en weer bedankt voor de link.
Maar dat wordt morgen, ben er klaar mee voor vandaag ;)

Ps2
Dit staat in jouw link :
The most useful pins are duplicated from P1 to P2.

Die pennetjes zijn gewoon duplicaatjes
I2C is een bus protocol, je hebt dus geen specifieke in en uitgangen voor I2C in princiepe kan je op alle printjes met een doorlus functie dus allebei de aansluitingen gebruiken.

De auto reset kan je uitschakelen, dit zit er in voor de upload van software. Hou er rekening mee dat als je het uitzet je dan altijd de reset knop moet vasthouden voor dat je de upload van software start.

[ Voor 3% gewijzigd door SnowDude op 25-12-2013 23:36 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


  • Sissors
  • Registratie: Mei 2005
  • Niet online
Er zijn daar wel uitzonderingen op. Als je bijvoorbeeld een MPU6050 printje ophaalt heb je ook twee I2C poorten, maar de ene is enkel geschikt als uitgang terwijl op de andere je microcontroller moet zijn aangesloten (de andere gaan via de MPU6050 die een doorlus functie heeft of zelf controle kan overnemen van de tweede I2C poort).

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
MPU6050 heeft nog een tweede bus om met andere hardware te praten, afhankelijk van welke mode de chip in werkt zal of de tweede bus door MPU6050 bediend worden of door de arduino zelf. Tweede bus kan gebruikt worden voor extra sensorren, MPU6050 kan die sensor aansturen in aantal modes, maar kan ook gewoon doorverbinden naar Arduino i2c bus. In PassThrough Mode zal de MPU6050 tweede i2c dus gewoon door verbinden met arduino i2c bus en zal de chip die aan de tweede i2c bus hangt gewoon door arduino i2c bus aangestuurd worden, arduino is dan gewoon de master ipv MPU6050.

-Andere hobby- -


  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Sissors schreef op donderdag 26 december 2013 @ 10:44:
Er zijn daar wel uitzonderingen op. Als je bijvoorbeeld een MPU6050 printje ophaalt heb je ook twee I2C poorten, maar de ene is enkel geschikt als uitgang terwijl op de andere je microcontroller moet zijn aangesloten (de andere gaan via de MPU6050 die een doorlus functie heeft of zelf controle kan overnemen van de tweede I2C poort).
Daarom heet die tweede aansluiting ook XDA en XCL, daaraan zie je al dat het niet de zelfde bus is als SDA en SDL.

All electric components run on smoke. If you let the smoke out, they won't work anymore.


  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
SnowDude schreef op woensdag 25 december 2013 @ 23:35:
De auto reset kan je uitschakelen, dit zit er in voor de upload van software. Hou er rekening mee dat als je het uitzet je dan altijd de reset knop moet vasthouden voor dat je de upload van software start.
Hmm, nee bedankt, ik zit maar wat te rommelen en is voorlopig geen noodzaak of iets.
Inmiddels headertje op P1 gezet : kitao in "[Discussie] Arduino-topic"
Aanvankelijk nog steeds geen signaal op SQW en wou net opgeven maar toen heb ik dit programma nog eens geprobeerd : http://tronixstuff.com/20...th-arduino-chapter-seven/
DS1307 Square-wave machine
Used to demonstrate the four different square-wave outputs from Maxim DS1307

Eindelijk beeld op de scoop zeg, pff
Afbeeldingslocatie: http://s28.postimg.org/pe7igxjop/SQW.jpg
klik
Momenteel gebruik ik het nergens voor maar dat Tiny RTC-module is me nu wel een stuk duidelijker geworden dankzij de nodige hulp :)

O ja, volgende stap wordt dan om te kijken of ik er ergens een temperatuurmeting via DS eruit kan halen.

[ Voor 4% gewijzigd door kitao op 26-12-2013 12:20 . Reden: O ja ]


  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Gisteravond had ik iets heel sneaky meegemaakt met de strcat() functie.
Je moet blijkbaar in de eerste string die je wil samenvoegen met een 2e string, ruimte hebben gedeclareerd, die ruim genoeg is voor beide strings.
Dus als stringA = "blabla" (7 byte (6 text, 1 terminator '0'))
en stringB = "fuuu" (5 byte, (4 text, 1 terminator '0')),
moet je StringA als 12 byte groot declareren....
Ik kreeg namelijk allemaal vreemde fouten die leken op een RAM overflow. Maar het blijkt dus dat die StringA 5 byte wegsnoepte van geheugen gereserveerd voor andere vars/functies... Lekker is dat :)

Elektronicaprojecten van mij: http://www.gm7.nl


Verwijderd

alexandersamson schreef op donderdag 26 december 2013 @ 12:51:
Gisteravond had ik iets heel sneaky meegemaakt met de strcat() functie.
Je moet blijkbaar in de eerste string die je wil samenvoegen met een 2e string, ruimte hebben gedeclareerd, die ruim genoeg is voor beide strings.
Dus als stringA = "blabla" (7 byte (6 text, 1 terminator '0'))
en stringB = "fuuu" (5 byte, (4 text, 1 terminator '0')),
moet je StringA als 12 byte groot declareren....
Ik kreeg namelijk allemaal vreemde fouten die leken op een RAM overflow. Maar het blijkt dus dat die StringA 5 byte wegsnoepte van geheugen gereserveerd voor andere vars/functies... Lekker is dat :)
ja daar loop ik ook nog regelmatig tegen aan, het juist converteren/gebruiken van datatypes, anders zie ik alleen maar oranje regels onderaan mijn scketch :?

Verwijderd

kitao schreef op donderdag 26 december 2013 @ 12:18:
[...]


Hmm, nee bedankt, ik zit maar wat te rommelen en is voorlopig geen noodzaak of iets.
Inmiddels headertje op P1 gezet : kitao in "[Discussie] Arduino-topic"
Aanvankelijk nog steeds geen signaal op SQW en wou net opgeven maar toen heb ik dit programma nog eens geprobeerd : http://tronixstuff.com/20...th-arduino-chapter-seven/
DS1307 Square-wave machine
Used to demonstrate the four different square-wave outputs from Maxim DS1307

Eindelijk beeld op de scoop zeg, pff
[afbeelding]
klik
Momenteel gebruik ik het nergens voor maar dat Tiny RTC-module is me nu wel een stuk duidelijker geworden dankzij de nodige hulp :)

O ja, volgende stap wordt dan om te kijken of ik er ergens een temperatuurmeting via DS eruit kan halen.
die sqw kan vb gebruikt worden in je sketch om te checken of je klokmodule wel loopt, daartoe verbind je dat signaal met een input op je arduino en lees die een paar keer in.
als je wel een tijd/datum binnenkrijgt maar je hebt geen 'hartbeat' is je klokmodule kaput.
-

Ik ga vandaag weer verder met het trachten te lezen van een CSV file op een SD kaartje met de arduino(mini) , met gebruik van oa de sdfatlib
Daartoe heb ik een eenvoudige CSV testfile geschreven op dat kaartje mbv CSved
Uiteindelijk is de bedoeling dat ik verjaardagen, ect. op kan slaan voor het hele jaar en mijn matrix klokje kijkt 1 x per dag op dat kaartje of er nog iets bijzonders te melden is.
Bij een verjaardag laat hij vb een knipperend hartje zien, bij een overlijden datum een kruisje + naam persoon.. work in progress 8)7

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

[ Voor 21% gewijzigd door Verwijderd op 26-12-2013 13:55 ]


  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
alexandersamson schreef op donderdag 26 december 2013 @ 12:51:
Gisteravond had ik iets heel sneaky meegemaakt met de strcat() functie.
Je moet blijkbaar in de eerste string die je wil samenvoegen met een 2e string, ruimte hebben gedeclareerd, die ruim genoeg is voor beide strings.
Dus als stringA = "blabla" (7 byte (6 text, 1 terminator '0'))
en stringB = "fuuu" (5 byte, (4 text, 1 terminator '0')),
moet je StringA als 12 byte groot declareren....
Ik kreeg namelijk allemaal vreemde fouten die leken op een RAM overflow. Maar het blijkt dus dat die StringA 5 byte wegsnoepte van geheugen gereserveerd voor andere vars/functies... Lekker is dat :)
String functie(zins versie 19) van arduino is een arduino fucntie, en geen echte c functie. Op achtergrond is string gewoon char array, zoals je dat bij c doet.

Dat gebeurd ook zonder strcat, als je array neemt die te klein is zal deel er niet in komen te staan.
Bij C moet je altijd array ruimte opgeven(of , het hoeft geen 12byte zijn, array mag alleen niet te klein zijn want dan mis je bytes, als arrary 6byte groot is en je probeer er 12byte in te stoppen zal alleen 6 MSB erin staan en de 6 LSB zullen erbuiten vallen, dat merkt de compiler en geeft dus fout.

Even snel voorbeeldje in elkaar gezet hoe ik het altijd doe, code niet getest.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char stringbuffer[64]; // buffer naar eigen smaak aanpassen, zorg dat de buffer niet kleiner is dan alle gezamelijke strings bij elkaar. 
char string1[] = "hallo";
char string2[] = " wereld";
  
  
void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(9600);
}

void loop()
{
    strcat(stringbuffer, string1); //string 1 in de buffer
    strcat(stringbuffer, string2); //string 2 erbij, nu in de buffer aanwezig: hallo wereld.
    Serial.println(stringbuffer); // Print: hallo wereld
    memset(stringbuffer, 0, sizeof(stringbuffer)); //reset buffer, anders loopt de buffer helemaal vol. 
    delay(1000);

}


Edit/
Overigens mag je met string functie van de arduino ook zo doe met string.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String string1 = "Hallo ";
String string2 = "wereld";
  
// the setup routine runs once when you press reset:
void setup() {                

Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
 
  String String3 =  string1 + string2; // string3 bevat: hallo wereld
  Serial.println(String3);
  delay(1000);
  
}


Maar voorbeeld 1 heeft minder resource nodig, geef dus voorkeur aan strcat ipv arduino string functie.

voorbeeld 1
Binaire sketch-grootte: 2.180 bytes (van een 32.256-byte maximum)

Voorbeeld 2
Binaire sketch-grootte: 4.024 bytes (van een 32.256-byte maximum)

[ Voor 15% gewijzigd door mad_max234 op 26-12-2013 18:03 ]

-Andere hobby- -


  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Verwijderd schreef op donderdag 26 december 2013 @ 12:58:
die sqw kan vb gebruikt worden in je sketch om te checken of je klokmodule wel loopt, daartoe verbind je dat signaal met een input op je arduino en lees die een paar keer in.
als je wel een tijd/datum binnenkrijgt maar je hebt geen 'hartbeat' is je klokmodule kaput.
Ok bedankt.
Nu meen ik wel gelezen te hebben dat zo'n ds1307 niet vanzelf een blokgolf op sqw zet. Die zou eerst aangeroepen moeten worden met een register zoals 0x07
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void sqw1() // set to 1Hz
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0x07); // move pointer to SQW address
  Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary)
  Wire.endTransmission();
}

void sqw2() // set to 4.096 kHz
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0x07); // move pointer to SQW address 
  Wire.write(0x11); // sends 0x11 (hex) 00010001 (binary)
  Wire.endTransmission();
}

Als dit eenmaal gedaan is dan 'onthoudt' de batterij dat.
Indien ik dat goed begrepen heb en er is nog geen register aangeroepen dan zou iemand dus wellicht ten onrechte kunnen denken dat die rtc naar de knoppen is.

Veel succes trouwens met je SD, ziet er ingewikkeld uit ;)

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Daarom lees je ook altijd eerst de datasheet voordat je aan de slag gaat, en als je dat nog niet heb gedaan hou je dat altijd in je achterhoofd als iets niet doet wat je zou verwachten, dan duik je gelijk de datasheet in om kijken hoe het werkt. :)

Alle registers staan standaard op 0 van de ds1307, dat is bij meeste chips het geval. Staat dus standaard uit, en je mag de sqw pin als je niet aanzet gewoon los laten, gebruik je die functie niet heb je nisk te maken met sqw, mag je laten floaten.


"Bit 4: Square-Wave Enable (SQWE). This bit, when set to logic 1, enables the oscillator output. The frequency of the square-wave output depends upon the value of the RS0 and RS1 bits. With the square-wave output set to 1Hz, the clock registers update on the falling edge of the square wave. On initial application of power to the device, this bit is typically set to a 0."

-Andere hobby- -


  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Ik ben druk bezig met leren programmeren en loop tegen iets aan waar jullie misschien een antwoord op hebben. Natuurlijk heb ik eerst Google lastig gevallen maar ik heb daar de oplossing niet gevonden. De TLDR mensen kunnen de volgende alinea overslaan:

Wat historie uit het dagboek van een hobby n00b:
Ik ben met een standaard 4x7 segment display (3461B) aan de slag gegaan omdat ik multiplexing wilde leren begrijpen. Ik wilde ook geen voorbeelden of libraries gebruiken maar de code zelf schrijven. Om die reden heb ik het display ook direct op mijn Uno boardje aangesloten zonder gebruik van een shift register (dat komt hierna 8)) Ik ben begonnen met een simpele teller van 1 cijfer en na wat gepruts om de getallen hun juiste segment naar binaire waarde te geven dat magische moment: Het werkte! Aangezien de datasheet van de fabrikant praktisch geen informatie bevat heb ik toen eerst het stroomverbruik van dat ene cijfer gemeten. Dat kwam niet boven 32 mA met de 220 Ohm weerstandjes die ik nog had liggen en zat daarmee nog net onder de maximale source/sink capaciteit van de Uno. Dus al snel had ik 4 cijfers die simultaan van 0-9 telden. Ik was bijzonder tevreden met mijzelf, dit zou een makkie worden.. Mijn volgende stap was niet dezelfde maar verschillende getallen op de 4 cijfers weer te geven. Wat ik begrepen had van multiplexing was dat ik ze dan 1 voor 1 moest aanzetten. De praktijk bleek daar wat lastiger, mijn eerste poging gaf de cijfers ook 1 voor 1 weer. Dat was de bedoeling niet, ik wilde ze allemaal tegelijk zien. Maar hoe kon ik het eerste cijfer actief houden terwijl ik de volgende informatie alleen aan het 2e cijfer wilde geven. Na nog wat programmeer pogingen was ik nog geen stap verder. Ik zag iets heel erg basic van multiplexing over het hoofd. Het was ondertussen al laat en ik baalde omdat het duidelijk was dat ik een onderdeel nog niet snapte terwijl het gevoelsmatig op het puntje van mijn tong lag. Eigenwijs als ik ben wilde ik in dit stadium ook geen hulp van Google, ik was er bijna maar wat miste ik? Het was pas toen ik al lang en breed in bed lag dat ik mijn eureka momentje had. Ik probeerde de cijfers veel te lang aan te houden, ik hield helemaal geen rekening met de snelheid van een controller en de traagheid van het oog: ik moest ze gewoon minimaal 20 of 30 keer per seconde ALLEMAAL om en om aan en uitzetten! Ik heb nog even overwogen om weer op te staan en het te gaan proberen maar ten eerste moest ik de volgende ochtend gewoon werken en ten tweede wist ik zeker dat ik nu op het goede spoor zat, wat stom dat ik het niet eerder gezien had. En inderdaad na wat experimenteren met de vertraging werkte het allemaal als een zonnetje. Missie geslaagd: Ik snap nu echt hoe multiplexing werkt. Daarna ben ik mijn code wat gaan opruimen en daar loop ik tegen het volgende probleem aan:

Ik gebruik een functie met 4 parameters om de cijfers te weer te geven. Nu zou ik dit prima met een 'for' lusje kunnen doen maar is het ook mogelijk om die 4 parameters daarin te verwerken? Wat ik bedoel:

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
void displaynumber(byte numberToShow0,byte numberToShow1, byte numberToShow2, byte numberToShow3)
{
  digitalWrite(ledPosition[0],HIGH);  
  for(int a=0;a<8;a++){
    if(bitRead(numberToShow0,a)==1){
      digitalWrite(ledSegment[a],LOW); 
    }
    else{
      digitalWrite(ledSegment[a],HIGH); 
    }
  }
  delay(wait);
  digitalWrite(ledPosition[0],LOW);
  
// Vanaf hier moet ik herhalen:

  digitalWrite(ledPosition[1],HIGH);  
  for(int a=0;a<8;a++){
    if(bitRead(numberToShow1,a)==1){
      digitalWrite(ledSegment[a],LOW); 
    }
    else{
      digitalWrite(ledSegment[a],HIGH); 
    }
  }
  delay(wait);
  digitalWrite(ledPosition[1],LOW);

// en dat voor alle 4 de cijfers...


En dat vind ik erg 'lelijk' ik wil het liefste iets zoals dit gebruiken:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void displaynumber(byte numberToShow0,byte numberToShow1, byte numberToShow2, byte numberToShow3)
{
  for(b=0;b<4;b++){
    digitalWrite(ledPosition[b],HIGH);  
    for(int a=0;a<8;a++){
      if(bitRead(numberToShow0,a)==1){
        digitalWrite(ledSegment[a],LOW); 
      }
      else{
        digitalWrite(ledSegment[a],HIGH); 
      }
    }
  delay(wait);
  digitalWrite(ledPosition[b],LOW);
}


Alleen zoek ik nu een manier om numberToShow0 in deze lus te kunnen vervangen door numberToShow1 etc. Zie ik weer iets simpels over het hoofd of kan het misschien helemaal niet? Met behulp van Google kom ik er niet uit. Wie heeft het verlossende antwoord voor me?

We do what we must because we can.


  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Maak er array van, dan kan je ze gewoon in loop verhogen naar andere waarde. Dat heb je ook al gedaan met ledSegment. Dus waarom niet doen met numberToShow?

numberToShow[] = {numberToShow0, numberToShow1, numberToShow2, etc, etc}

En dan loop om de huidige loop heen die numberToShow[] verhoogt.

edit/
Extra loop is niet nodig als je aantal hetzelfde is al ledPosition, dan kan je gewoon b gebruiken, maar weet niet helemaal hoe en wat je wilt bereiken, dus dat laat ik even aan jou.

uiteraard niet getest, maar zoiets moet denk ik werken, wellicht moet je het even wat aanpassen want weet niet helemaal of dit de bedoeling is, maar gaat om het principe, dus numberToShow in array stoppen.
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
byte numberToShow[] = {numberToShow0, numberToShow1, numberToShow2}

void displaynumber(byte numberToShow[])
{
  for(b=0;b<4;b++){
    digitalWrite(ledPosition[b],HIGH);  
    for(int a=0;a<8;a++){
      if(bitRead(numberToShow[b],a)==1){
        digitalWrite(ledSegment[a],LOW); 
      }
      else{
        digitalWrite(ledSegment[a],HIGH); 
      }
    }
  delay(wait);
  digitalWrite(ledPosition[b],LOW);
}

[ Voor 63% gewijzigd door mad_max234 op 26-12-2013 15:41 ]

-Andere hobby- -


  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Bedankt mad_max! Je tip heeft me geholpen en ook zonder je voorbeeld ben ik een heel eind gekomen (ik had je edit gemist :))

Dit is het geworden:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void displaynumber()
{
  numberToShow[0]=numberTable[minuut];
  numberToShow[1]=numberTable[secondeL];
  numberToShow[2]=numberTable[secondeR];
  numberToShow[3]=numberTable[tiende];
  for(int b=0;b<4;b++){
    digitalWrite(ledPosition[b],HIGH);  
    for(int a=0;a<8;a++){
      if(bitRead(numberToShow[b],a)==1){
        digitalWrite(ledSegment[a],LOW); 
      }
      else{
        digitalWrite(ledSegment[a],HIGH); 
      }
    }
    delay(wait);
    digitalWrite(ledPosition[b],LOW);
  }   
}  


Hmm waarom heeft jouw code kleurtjes en de mijne niet?

P.s. mad_max: je onderschrift link (http://www.aquabiotoop.nl/) werkt niet

[ Voor 13% gewijzigd door ResuCigam op 26-12-2013 22:40 ]

We do what we must because we can.


  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Hoe stop je nu alle die variabele in de functie? Via volatile of zo?

Kan ze beter doorgeven zoals het hoort, scheelt hoop geheugen en is sneller, vanuit register rekenen gaat sneller en hoef niet steeds naar ram geschreven te worden.
C:
1
2
3
void displaynumber(byte status, byte test) {

}

Je stopt er dan zo variabel in. Naam van varibale die je wilt doorgeven zet je op dezelfde plek als de variable van de functie die de waarde moet ontvangen. var1 gaat nu naar status en var2 gaat naar test.
C:
1
2
3
4
byte var1 = 5;
byte var2 = 3;

displaynumber(var1, var2);


En waarde uit functie krijgen doe je met return

C:
1
2
3
4
5
6
7
void displaynumber(byte status, byte test) {

uitkomst = status + test;

return uitkomst

}

Spreek je dan zo aan

C:
1
2
3
4
byte var1 = 5;
byte var2 = 3;

byte som = displaynumber(var1, var2); // som zal uitkomst bevatten.


Edit/
Over die kleurtjes vind je hier.
Overzicht van UBB-codes #tag_code

code=c

[ Voor 16% gewijzigd door mad_max234 op 26-12-2013 22:31 ]

-Andere hobby- -


  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Ik snap niet zo goed wat je probeert uit leggen hier, bedoel je dat het beter is om
C:
1
2
3
void displaynumber(byte number1, byte number2, byte number3, byte number4){
// te gebruiken in combinatie met:
displaynumber(numberTable[minuut], numberTable[secondeR], numberTable[secondeL], numberTable[tiende]);

dan:
C:
1
2
3
void displaynumber(){
// te gebruiken in combinatie met:
displaynumber();


Mij leek de laatste uitvoering juist eleganter? De rest van de functie blijft gelijk, ik moet nog steeds mijn nieuwe array numberToShow[] vullen om een lus te kunnen gebruiken (mijn oorspronkelijke vraag). In het eerste geval moet ik numberToShow[] vullen met number1 etc. En in het tweede geval gebruik ik daar meteen numberTable[whatever] voor.

[ Voor 31% gewijzigd door ResuCigam op 26-12-2013 23:15 ]

We do what we must because we can.


  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Dat is niet helemaal correct.

declare
C:
1
void displaynumber(byte number1, byte number2, byte number3, byte number4);


Functie zelf
C:
1
2
3
4
5
void displaynumber(byte number1, byte number2, byte number3, byte number4) {

blablabla, code van de functie. 

}


Gebruikt de fucntie dan zo, geeft minuten door aan number1, en geeft secondeR door aan number2, etc. number1 bevat dan dus de waarde minuut.
C:
1
displaynumber(minuut, secondeR, secondeL, tiende);


Je mag number1 ook gewoon minuut noemen, geldt ook voor de andere, number2, 3 en 4, compiler ziet dat als twee verschillende stukken code variabel mogen dus hetzelfde genoemd worden. Code in functie is private en afgeschermd van rest van de code simpel uitgelegd.

Als je het niet helemaal begrijpt kan je dit nog even lezen.
http://arduino.cc/en/Reference/FunctionDeclaration

En google is geen schande hoor, als beginner is het juist iets goeds, dat je opzoek gaat naar andere insteken en gaat lezen hoe andere iets oplossen. Later als je wat gevorderd bent kan je zelf dingen gaan bedenken met kennis die je hebt opgedaan.

Edit/
Voor beginnen lijkt het wellicht netter, maar is het niet, is juist slordig programmeren, variabele die bij de functie horen heb jij nu ergens in de code staan, jou functie kan je niet zomaar even naar andere code kopiëren, moet je ook al variabel erbij zoeken. Dan nog compiler die jou code omzet naar veel minder efficiënte machine code.

[ Voor 21% gewijzigd door mad_max234 op 26-12-2013 23:16 ]

-Andere hobby- -


  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Oh sorry voor het vergeten { aan het einde van mijn declare voorbeeldje. Hoe meer je verteld hoe vager je verhaal voor mij wordt. Ik heb na je 2e post echt geen flauw idee meer wat je me probeert duidelijk te maken, ik snap volgens mij best de basics hoe ik een functie moet declaren en gebruiken. Laten we het hier maar even bij laten, je hebt me heel erg geholpen met mijn oorspronkelijke vraag waarvoor mijn dank. Mijn programma werkt :)

We do what we must because we can.


  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Zie link en let vooral op stukje over parameters doorgeven, je hebt de klokken gehoord maar de klepel nog net niet gevonden. :D

Vooraf declare is niet eens nodig, zolang de functie boven je code staat die hem aanroept, maar dat is even niet van belang, gaat om doorgeven van variabele, of zoals in de link worden genoemd parameters.

En is bij dit soort simpel codes niet erg van belang, maar word het complexer of heb je bepaalde snelheid nodig is je code dan kan van belang zij. Of als je gewoon netjes wilt leren programmeren.

Maar zijn meer wegen die naar Rome leiden,, alleen zijn ze niet allemaal even goed en sommige zelfs af te raden. En wij programmeurs wandelen graag allemaal op dezelfde weg, op die manier snappen we elkaars code beter. ;)

Goede oefening, bestudeer deze code eens, en zet eens bij elk regel wat het doet of wat het is, met //commentaar.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup(){
  Serial.begin(9600);
}

void loop() {
  int i = 2;
  int j = 3;
  int k;

  k = myMultiplyFunction(i, j); // k now contains 6
  Serial.println(k);
  delay(500);
}

int myMultiplyFunction(int x, int y){
  int result;
  result = x * y;
  return result;
}

[ Voor 25% gewijzigd door mad_max234 op 26-12-2013 23:27 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • ResuCigam
  • Registratie: Maart 2005
  • Laatst online: 15:12

ResuCigam

BOFH

Toch nog even een snelle reactie, ik kan het niet laten :) Ik heb de eerste 4 regels uit mijn laatste variant verhuisd naar de stopwatch() functie waar ze inderdaad meer op hun plaats zijn en ook niet zo vaak ge-update worden. Met jouw advies om een array te gebruiken voor numberToShow en de overgebleven functie ben ik zeer content:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void displaynumbers()
{
  for(int b=0;b<4;b++){
    digitalWrite(ledPosition[b],HIGH);  
    for(int a=0;a<8;a++){
      if(bitRead(numberToShow[b],a)==1){
        digitalWrite(ledSegment[a],LOW); 
      }
      else{
        digitalWrite(ledSegment[a],HIGH); 
      }
    }
    delay(wait);
    digitalWrite(ledPosition[b],LOW);
  }   
}

We do what we must because we can.


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
mad_max234 schreef op donderdag 26 december 2013 @ 14:04:
[...]


String functie(zins versie 19) van arduino is een arduino fucntie, en geen echte c functie. Op achtergrond is string gewoon char array, zoals je dat bij c doet.

Dat gebeurd ook zonder strcat, als je array neemt die te klein is zal deel er niet in komen te staan.
Bij C moet je altijd array ruimte opgeven(of , het hoeft geen 12byte zijn, array mag alleen niet te klein zijn want dan mis je bytes, als arrary 6byte groot is en je probeer er 12byte in te stoppen zal alleen 6 MSB erin staan en de 6 LSB zullen erbuiten vallen, dat merkt de compiler en geeft dus fout.

Even snel voorbeeldje in elkaar gezet hoe ik het altijd doe, code niet getest.

C:
1
voorbeeldcode 1


Edit/
Overigens mag je met string functie van de arduino ook zo doe met string.

C:
1
voorbeeldcode 2


Maar voorbeeld 1 heeft minder resource nodig, geef dus voorkeur aan strcat ipv arduino string functie.

voorbeeld 1
Binaire sketch-grootte: 2.180 bytes (van een 32.256-byte maximum)

Voorbeeld 2
Binaire sketch-grootte: 4.024 bytes (van een 32.256-byte maximum)
Heb hier best wat aan gehad. :)
doet die memset trouwens het zelfde als:

C:
1
2
3
4
5
6
7
#define ARRLENGTH 12

char thisIsACharArray[ARRLENGTH];

for(i=0;i<ARRLENGTH;i++){
  thisIsACharArray[i] = 0;
}

?
Even voor de beeldvorming. Ik weet dat bovenstaande omslachtig zou zijn.

[ Voor 28% gewijzigd door alexandersamson op 27-12-2013 12:52 ]

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 18:29
Imho in C wordt meestal een buffer/temp gebruikt die 512 chars is.
Hier wordt de waarde ingezet waarna je een functie gebruikt die het mbv malloc het juiste aantal geheugen alloceert (en dan daarna de buffer free'd). Dit geeft dan een pointer terug die je gewoon aan de variabele koppelt..

Maar om eerlijk te zijn zijn pointers ook niet de meest simpele dingen voor beginners.

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
kitao schreef op donderdag 26 december 2013 @ 12:18:
Volgende stap wordt dan om te kijken of ik er ergens een temperatuurmeting via DS eruit kan halen.
Geprobeerd volgens deze site : http://www.pjrc.com/teensy/td_libs_OneWire.html
C++:
1
2
if ( !ds.search(addr)) {
    Serial.print("No more addresses.\n");

Op de ser.mon. krijg ik te zien "No more addresses".
Ik neem aan dat er dan geen adres wordt gevonden en er dus geen DS18B20 opzit ?
Ik zie die sensor ook nergens zitten op de module.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Icekiller2k6 schreef op vrijdag 27 december 2013 @ 13:04:
Imho in C wordt meestal een buffer/temp gebruikt die 512 chars is.
Hier wordt de waarde ingezet waarna je een functie gebruikt die het mbv malloc het juiste aantal geheugen alloceert (en dan daarna de buffer free'd). Dit geeft dan een pointer terug die je gewoon aan de variabele koppelt..

Maar om eerlijk te zijn zijn pointers ook niet de meest simpele dingen voor beginners.
C op PC of zo gebruik je iets anders dan C voor een uC, soms wil je niet dat er extra rekenwerk aan te pas komt omdat je maar erg beperkt resource hebt, dus rekenen je zelf de buffer uit en zet je die vast, scheelt weer ruimte en cpu tijd. Sommige c functies wil je ook liever niet gebruiken bij uC, geloof dat er ook aantal ontbreken voor AVR's.

Edit/
Pointers is een van de voordelen van C, dat heeft je veel meer vrijheid.
alexandersamson schreef op vrijdag 27 december 2013 @ 12:50:
[...]


Heb hier best wat aan gehad. :)
doet die memset trouwens het zelfde als:

C:
1
2
3
4
5
6
7
#define ARRLENGTH 12

char thisIsACharArray[ARRLENGTH];

for(i=0;i<ARRLENGTH;i++){
  thisIsACharArray[i] = 0;
}

?
Even voor de beeldvorming. Ik weet dat bovenstaande omslachtig zou zijn.
Nee niet helemaal, uitkomst kan wellicht hetzelfde maar werkt toch heel anders, menset is geheugenpointer, je bewerkt daarmee direct de geheugen cellen, je geeft gewoon op wat er in de geheugen moet komen te staan. De naam zegt het al, memset.

je kan er dus hetzelfde doen als jij hierboven doet maar ook nog andere dingen, zoals delen vervangen, weghalen, etc. Manipuleert letterlijk de geheugen cellen waar de waarde van de variabele zich in bevind

http://www.tutorialspoint...ary/c_function_memset.htm

Hoop dat het beetje duidelijk is?

edit/2
Heb even testje gedaan met memset vs for loop(zoals jou voorbeeld).

Memset voorbeeld van vorige post
Binaire sketch-grootte: 2.180 bytes (van een 32.256-byte maximum)

Nu met de for loop, is dus net heel klein beetje efficiënter om for loop te gebruiken in dit geval.
Binaire sketch-grootte: 2.178 bytes (van een 32.256-byte maximum)

Snelheid heb ik niet getest, daar kan ook nog verschil in zitten, en dat is voor sommige projecten wellicht nog meer van belang, hangt natuurlijk van het project af.

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
char stringbuffer[64]; // buffer naar eigen smaak aanpassen, zorg dat de buffer niet kleiner is dan alle gezamelijke strings bij elkaar. 
char string1[] = "hallo";
char string2[] = " wereld";
 
  
void setup()
{
  // start serial port at 9600 bps:
  Serial.begin(9600);
}

void loop()
{
    strcat(stringbuffer, string1); //string 1 in de buffer
    strcat(stringbuffer, string2); //string 2 erbij, nu in de buffer aanwezig: hallo wereld.
    Serial.println(stringbuffer); // Print: hallo wereld
    
   
    for(byte i=0;i<64;i++){
      stringbuffer[i] = 0;
    }
    
    //memset(stringbuffer, 0, sizeof(stringbuffer)); //reset buffer, anders loopt de buffer helemaal vol. 
    delay(1000);

}


Edit/3 :D
Was even vergeten te melden dat ik ook zonder sizeof getest heb in memset functie/
memset(stringbuffer, 0, 64);

Dat maakte geen verschil, compiler optimaliseerde dat al naar vaste waarde, in de machinetaal zit er dus geen verschil tussen wel of geen sizeof in deze situatie.

[ Voor 67% gewijzigd door mad_max234 op 27-12-2013 15:23 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • Demo
  • Registratie: Juni 2000
  • Laatst online: 20-09 14:09

Demo

Probleemschietende Tovenaar

Ik heb een vage bug. myDataOut is een unsigned long, waarvan ik de bits uitlees om een aantal 74HC595 schuifregisters mee te vullen. Het volgende werkt: (sample code van Arduino.cc)
C:
1
2
3
4
5
6
7
8
9
10
11
int pinState;

if (myDataOut & (1<<i) ) {
  pinState=true;
}
else
{   
  pinState=false;
}

digitalWrite(myDataPin, pinState);


Dit leek mij te vereenvoudigen naar:
C:
1
digitalWrite(myDataPin, (myDataOut & (1<<i)));

Echter gaan hierbij alleen de eerste 8 LED's branden :? Ergens in deze one-liner wordt mijn long dus omgezet naar een byte, maar waarom gebeurt dat dan niet in het if-statement?

Unix doesn't prevent a user from doing stupid things, because that would necessarily prevent them from doing brilliant things.
while true ; do echo -n "bla" ; sleep 1 ; done


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
mad_max234 schreef op vrijdag 27 december 2013 @ 14:28:
[...]


Hoop dat het beetje duidelijk is?

edit/2
Heb even testje gedaan met memset vs for loop(zoals jou voorbeeld).

Memset voorbeeld van vorige post
Binaire sketch-grootte: 2.180 bytes (van een 32.256-byte maximum)

Nu met de for loop, is dus net heel klein beetje efficiënter om for loop te gebruiken in dit geval.
Binaire sketch-grootte: 2.178 bytes (van een 32.256-byte maximum)

Snelheid heb ik niet getest, daar kan ook nog verschil in zitten, en dat is voor sommige projecten wellicht nog meer van belang, hangt natuurlijk van het project af.

C:
1
stuk code


Edit/3 :D
Was even vergeten te melden dat ik ook zonder sizeof getest heb in memset functie/
memset(stringbuffer, 0, 64);

Dat maakte geen verschil, compiler optimaliseerde dat al naar vaste waarde, in de machinetaal zit er dus geen verschil tussen wel of geen sizeof in deze situatie.
interessant eigenlijk dat een ogenschijnlijk omslachtigere manier, met 2 byte efficienter is :P Had ik niet zien aankomen. Voor de rest is de functie van memset mij nu duidelijk :)

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
mad_max234 schreef op vrijdag 27 december 2013 @ 14:28:
[...]


C op PC of zo gebruik je iets anders dan C voor een uC, soms wil je niet dat er extra rekenwerk aan te pas komt omdat je maar erg beperkt resource hebt, dus rekenen je zelf de buffer uit en zet je die vast, scheelt weer ruimte en cpu tijd. Sommige c functies wil je ook liever niet gebruiken bij uC, geloof dat er ook aantal ontbreken voor AVR's.
Volgens mij een hele zooi ;). Maar dan nog, mbeds hebben beschikking tot alle C functies. Laatst was er iemand die vroeg waarom zijn vector functies (standaard C lib) niet werkte. Hij had gewoon foutje gemaakt, maar even gekeken ernaar: iets van 20kB flash geheugen gebruik van enkel die lib. Op een PC verwaarloosbaar. Op een LPC1768 met 512kB flash acceptabel (al moet je niet teveel van zulk soort includen). Bij een LPC812 echter paste enkel de vector lib al niet in zijn flash geheugen.

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
We zitten hier met 32KB en willen meestal maximale eruit halen wat mogelijk is, of iets wat in de buurt komt. Floats is al erg zwaar voor avr, die kan je zelfs al beste vermijden, alles in integer berekenen en in factor van 1000 of zo is veel sneller en kost veel minder geheugen.

Ik werk dan ook altijd in avr studio en/of eclipse in C als ik iets ontwerp in kleine serie, arduino is dan echt veel te zwaar, moet gewoon twee keer zo dure avr kopen als je arduino erbij gaat halen om code erin kwijt te kunnen. En dan heb ik het nog niet over snelheidsverlies, dat is niet te compenseren door duurder mega te kopen, 20Mhz is max ook voor de grotere mega's.

Maar vind arduino wel leuk om wat mee te spelen, bekende chips kan je gewoon veel snller aan de praat krijgen en daarna je eigen code ervan maken, meestal moet libs wel aanpassen voordat ze doen wat je wilt maar je het een werkende basis.

Kan ook prima vanuit datasheet een lib schrijven maar kost altijd paar avonden en soms meer als het wat tegen zit en je fouten niet snel ontdekt. Je kent het vast wel, van die fouten waar je uren naar opzoek bent van de standaard foutjes die overduidelijk recht voor je neus staan, foute register aanspreken, verkeerd pin hoog, etc, soms zie je ze gewoon niet, nachtje slapen doet vaak wonderen. Dan is werkend voorbeeld wel zo fijn, kan je gelijk aan de slag.

Edit/
Wat ik ook wel eens vergeet of te lui bent om over na te denken is dat arduino op -Os staat, dus op grote word geoptimaliseerd. De code die je in C of arduino schrijft zal ook niet de code zijn die in de uC zal komen te staan. De compiler maakt daar afhankelijk van de instellingen een code van, soms kan heel stuk code helemaal weg geoptimaliseerd worden puur omdat het eigenlijk niks doet. Zoals sizeof in mijn voorbeeld, had het verder niet getest en had over het hoofd gezien dat alle array's een constante grote hadden, en sizeof dus totaal overbodig was want vooraf waren alle waardes al bekend en zou nooit veranderen, dan zal de compiler daar dus ook geen geheugen voor vrijmaken en alles zo klein mogelijk maken.

Let dus op dat functie wel eens anders kan uitpakken als je met variabele wekt die wel veranderen.

[ Voor 23% gewijzigd door mad_max234 op 27-12-2013 21:45 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
mad_max234 schreef op vrijdag 27 december 2013 @ 21:03:

Kan ook prima vanuit datasheet een lib schrijven maar kost altijd paar avonden en soms meer als het wat tegen zit en je fouten niet snel ontdekt. Je kent het vast wel, van die fouten waar je uren naar opzoek bent van de standaard foutjes die overduidelijk recht voor je neus staan, foute register aanspreken, verkeerd pin hoog, etc, soms zie je ze gewoon niet, nachtje slapen doet vaak wonderen. Dan is werkend voorbeeld wel zo fijn, kan je gelijk aan de slag.
Er zíjn mensen die het leuk vinden om een lib te schrijven, zodat mensen die dat niet leuk vinden tóch lekker met hun AVR kunnen hobbyen. Zo zijn er ook mensen die het leuk vinden om uit te zoeken hoe je het onderste uit een WiFi router kunt halen - ik zeg: prima! Dit electro interessegebied is zo enorm uitgebreid, er is altijd wel wat voor iemand.

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


Acties:
  • 0 Henk 'm!

Verwijderd

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

spraak besturingbordje binnen.. zou dat werken :?

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Heb er ook één, antwoord: Ja. Als je beetje volume goed hebt en geen achtergrond geluid hebt :P. Ik kon iig gewoon exact vertellen vanaf welke stand van de radio hij niks meer deed.

Acties:
  • 0 Henk 'm!

Verwijderd

ja dat dacht ik wel.. ik had bedacht een klein zendertje met mic in een halsketting verwerken (denk oma/gehandicapt) en aan de andere kant een ontvangertje en dat voice rec boardje.. maar ja.. ik wil zoveel :D

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
en ik een tmp36
Afbeeldingslocatie: http://i.imgur.com/pHlVQiss.jpg
kan weer stapje verder op naar hfdst 2
http://tronixstuff.com/20...with-arduino-chapter-two/
schiet al op, nog maar 55 te gaan :-(

Acties:
  • 0 Henk 'm!

Verwijderd

die doen het best goed.
wil je wat nauwkeuriger meten > http://playground.arduino.cc/Main/LM35HigherResolution

en verder nog wat info:
http://pscmpf.blogspot.nl/2008/12/arduino-lm35-sensor.html
http://www.instructables....-TEMPERATURE-SENSOR-LM35/

voor een buitentemp meter heb ik dit kant en klare kabeltje gekocht, lui als ik ben O-)

waar ze ook een leuk programmertje verkopen .. tip zelf al een aantal maal daar iets gekocht.. prima shop

[ Voor 42% gewijzigd door Verwijderd op 28-12-2013 12:04 ]


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
Heb eindelijk een 3x4 keypad werkend gekregen met gebruik van slechts 1 analoge pin. Was even wat gegoochel met de juiste weerstandwaarden, maar het werkt :)

Heb even filmpje gemaakt met dat ik 4 timers instel met zo'n keypadje
http://www.youtube.com/watch?v=nWh25nONraI

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij ben jij een raket lanceer installatie aan het bouwen 8)

Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
shhhttt NSA luistert mee :P (Lasergame tijdbom voor een outdoor organisatie bedrijfje ;) )

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

als is over gedacht om je sensor data de cloud in te sturen waardoor die met een app te bekijken is ? .. ik ben me nog aan het inlezen 8)
heb wel alvast een ethernet shield besteld en een gratis dev account aangemaakt

Afbeeldingslocatie: http://i.imgur.com/6eLq5n1.jpg

[ Voor 16% gewijzigd door Verwijderd op 28-12-2013 13:15 ]


Acties:
  • 0 Henk 'm!

  • alexandersamson
  • Registratie: Oktober 2003
  • Laatst online: 13-12-2022
interessant, maar ik heb daar nog te weinig kennis van. Kan ik dat bedrijf dat een lichte deadline heeft, niet aandoen :P Wel komt er GSM functionaliteit op. via SMS codes kan het ding worden uitgelezen, 'ontploffen' en worden gepauseerd bijvoorbeeld. Wordt laatste fase van de opdracht. Nu nog bezig met de spelmechanieken :)

Elektronicaprojecten van mij: http://www.gm7.nl


Acties:
  • 0 Henk 'm!

Verwijderd

een beginnetje kan zijn dit gratis boek (hoofdstuk 8.8.2) 8)

ik ga als proefje (wanneer ik tijd heb :9~ ) als eerste is gewoon de RTC + temp naar de cloud sturen.. de onderdelen liggen klaar... maar ja tijd
Afbeeldingslocatie: http://i.imgur.com/UndUv5X.jpg

[ Voor 46% gewijzigd door Verwijderd op 28-12-2013 16:16 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Verwijderd schreef op zaterdag 28 december 2013 @ 11:54:
TMP36, die doen het best goed.
wil je wat nauwkeuriger meten...........
Bedankt voor de links weer, ik zal die tzt eens bekijken. Voorlopig ben ik even bezig met mijn 'eigen'site aan het uit te vogelen. Ik snap dat verhaal van hem namelijk niet zo goed, zie :
http://tronixstuff.com/20...with-arduino-chapter-two/
Looking again at page eight of the data sheet, it describes the output characteristics of the sensor. With our TMP36, the output voltages increases 10 millivolts for every degree Celsius increase; and that the output voltage for 25 degrees Celsius is 750 mV; and that there is an offset voltage of 400 mV.
Kijk ik echter op de datasheet rechtsonder dan zie ik wat anders. Om het makkelijk te maken heb ik vergrootbare plaatjes :
Afbeeldingslocatie: http://s15.postimg.org/neefdkt7b/tmp36.jpg
Hier staat toch duidelijk offset= 0.5V = 500mV
Aan de andere kant is het wel zo dat bij -40'C tot 0'C en 10mV/'C daar een verschil in zit van 400mV.
Dus wat hij schrijft is deels (in)correct, niet volledig, of ik zie iets over het hoofd. :?
Met deze grafiek 6 erbij zou de spanning op -40'C 100mV moeten zijn en op 0'C 500mV.
Afbeeldingslocatie: http://s30.postimg.org/hs6yb5rml/tmp36_2.jpg
Helaas heb ik vandaag geen andere thermometer om te vergelijken maar ik begin wel enigzins te twijfelen aan zijn programma.

Acties:
  • 0 Henk 'm!

Verwijderd

ja het zal wel weer aan dat boek of die site liggen.. ik ken je onderhand wel :'(
ben ook erg nieuwsgierig hoe jij -40 denkt te gaan meten

[ Voor 29% gewijzigd door Verwijderd op 28-12-2013 14:47 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Verwijderd schreef op zaterdag 28 december 2013 @ 14:44:
ja het zal wel weer aan dat boek of die site liggen.. ik ken je onderhand wel :'(
ben ook erg nieuwsgierig hoe jij -40 denkt te gaan meten
Jij had allang een hamer gepakt om er 'uit' te komen niet ?

Acties:
  • 0 Henk 'm!

Verwijderd

er is helemaal geen 'probleem'.. jij maakt een probleem 8)
bouw dat simpele schakelingetje nou eerst is op.. verdiep je in de code en kijk(evt) naar die linkjes om de nauwkeurigheid nog wat te verhogen (heb ik vorige week ook gedaan)

[ Voor 7% gewijzigd door Verwijderd op 28-12-2013 15:03 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Die schakeling geloof ik wel, daar is niks boeiends aan.
En natuurlijk wou ik afgegeven spanning meten bij kamertemp en niet bij -40. Moet je wel weten hoe warm het in de kamer is.
Overigens is die meneer echt niet foutloos hoor.
Xavi says:
October 11, 2012 at 2:55 am
Hi,
I tested your sketch but I think you make a little mistake. TMP36 goes from -40 degrees C (0mv) to +125 degrees C in steps of 10mV per degree. This means that 0 degrees is equal of 400mV. The offset voltage may be -400 to set the correct temperature.
Is it right?

Reply
John Boxall says:
October 11, 2012 at 3:05 am
Wow – thanks for seeing that. You’re right, and I’ve updated the article.
Thank you
En die Xavi ziet het ook niet goed want volgens grafiek 6 is het geen 0mV bij -40

[ Voor 5% gewijzigd door kitao op 28-12-2013 15:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

bouw en test het schakelingetje en de code.. werkt wel hoor.
er is wel een klein verschilletje tussen de TMP35 en de TMP36

maar als die 18.45 graden aangeeft, weet ik ook niet of het 18.63 in werkelijkheid op dat moment is.. voor een kamertemperatuurmeter boeien.. in een produktie proces uitkijken ;)

[ Voor 11% gewijzigd door Verwijderd op 28-12-2013 15:17 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik neem aan dat jij ook kan lezen borroz.
Datasheet zegt : offset 500mV
Aussie zegt : offset 400mV
dan hebben we het niet over een verschil van 0.18 graad maar over 10 graden verschil.
Pagina: 1 ... 36 ... 96 Laatste