Elektronische Sleutel IB tag
22 berichten
• Pagina 1 van 3 • 1, 2, 3
Elektronische Sleutel IB tag
Hoi,
ben nieuw in het Arduino wereld.
Wil graag een ibutton garage poort opener maken heb al iets in elkaar gezet en deze werkt, misschien kan er iets verbeterd worden.
Suggesties mag.
Maar ben vooral op zoek hoe ik bv key1 een naam kan geven op het seriële monitor van plaats een nummer. Zodat ik kan zien wie zijn sleutel is gebruikt.
Wie kan me helpen.
Mvg Danny B
ben nieuw in het Arduino wereld.
Wil graag een ibutton garage poort opener maken heb al iets in elkaar gezet en deze werkt, misschien kan er iets verbeterd worden.
Suggesties mag.
Maar ben vooral op zoek hoe ik bv key1 een naam kan geven op het seriële monitor van plaats een nummer. Zodat ik kan zien wie zijn sleutel is gebruikt.
Wie kan me helpen.
- Code: Alles selecteren
#include <OneWire.h>
// ID's van twee iButton-sleutels
byte key1[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC}; // 00 00 00 00 01 00 00 DC
byte key2[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54}; // 00 00 00 00 01 00 00 54
int pinNumber = 2;
OneWire ds(pinNumber);
void setup() {
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop() {
byte addr[8];
byte val1 = 0;
byte val2 = 0;
delay(1000);
if (ds.search(addr)) {
Serial.print("#");
for (int i=0; i<8; i++) {
Serial.print(" ");
Serial.print(addr[i], HEX);
// 1key
if (addr[i] == key1[i]) val1++;
// 2 key
if (addr[i] == key2[i]) val2++;
}
Serial.print("@");
Serial.println("");
ds.reset_search();
}
if (val1 == 8) {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
}
if (val2 == 8) {
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
}
}
Mvg Danny B
Advertisement
Re: Elektronische Sleutel IB tag
Wanneer je overstapt op een twee-dimensionaal array, dan kun je de naam eenvoudig toevoegen.
Om een paar byte te vergelijken is er de functie memcmp() : http://www.cplusplus.com/reference/cstring/memcmp/.
Die hoef je niet te gebruiken, je kunt ook de 8 byte aflopen zoals je nu hebt.
- Code: Alles selecteren
// ID's van twee iButton-sleutels
const byte keys[2][8] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC}, // 00 00 00 00 01 00 00 DC
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54}, // 00 00 00 00 01 00 00 54
};
const char * namen[2] = { "Tjeerd", "Wietske" };
Om een paar byte te vergelijken is er de functie memcmp() : http://www.cplusplus.com/reference/cstring/memcmp/.
Die hoef je niet te gebruiken, je kunt ook de 8 byte aflopen zoals je nu hebt.
Re: Elektronische Sleutel IB tag
Als je een twee-dimensioneel array gebruikt, dan krijg je vaak twee for-statements in elkaar en keys[i][j].
Kun je laten zien wat je hebt ?
Kun je laten zien wat je hebt ?
Re: Elektronische Sleutel IB tag
Ken er niet veel van he dus ben even niet mee.
heb niet veel veranderd.
heb niet veel veranderd.
- Code: Alles selecteren
#include <OneWire.h>
// ID's van twee iButton-sleutels // en dit gedeelte geplaatst van jou
const byte keys[2][8] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC}, // 00 00 00 00 01 00 00 DC
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54}, // 00 00 00 00 01 00 00 54
};
const char * namen[2] = { "Tjeerd", "Wietske" };
int pinNumber = 2;
OneWire ds(pinNumber);
void setup() {
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop() {
byte addr[8];
byte val1 = 0;
byte val2 = 0;
delay(1000);
if (ds.search(addr)) {
Serial.print("#");
for (int i=0; i<8; i++) {
Serial.print(" ");
Serial.print(addr[i], HEX);
// 1key
if (addr[i] == keys[i]) val1++; // deze veranderd van key1 naar keys
// 2 key
if (addr[i] == keys[i]) val2++; // deze veranderd van key2 naar keys
}
Serial.print("@");
Serial.println("");
ds.reset_search();
}
if (val1 == 8) {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
}
if (val2 == 8) {
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
}
}
Re: Elektronische Sleutel IB tag
als je de mogelijke keys in een array hebt gezet.
dan kun je met een for loop vragen welke gelijk is aan de invoer.
as gelijk dan kun je in de tweede array opvragen welke naam erbij hoort.
dan kun je met een for loop vragen welke gelijk is aan de invoer.
as gelijk dan kun je in de tweede array opvragen welke naam erbij hoort.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Elektronische Sleutel IB tag
Even terug tijd gehad om te bekijken maar heb nog een duwtje nodig.
Geraak er niet aan uit.
Geraak er niet aan uit.
Re: Elektronische Sleutel IB tag
Voordat je onderstaande sketch probeert, zoek dan eerst zelf eens uit waar myData[1][0][0][4] en myData[0][1][3][2] zitten.
De fijnste onderderverdeling staat achteraan.
Ik koos myData[3][2][4][5].
Dat zou dit kunnen zijn: drie gebouwen, met in elk gebouw twee kasten, in elke kast vier laden, en in elke lade vijf stropdassen.
Dat is bij elkaar 3 * 2 * 4 * 5 = 120 stropdassen. En op elke stropdas staat een integer getal geschreven.
Of dit: drie landen, met in elk land twee provincies, in elke provincie vier dorpen, en elk dorp vijf inwoners, en het array geeft het aantal euros dat iedere inwoner heeft.
De index begint bij 0.
Het is dus myData[0...2][0...1][0...3][0...4].
Het belangrijkste deel zijn de vier for-loops in elkaar, met daar binnenin: myData[i][j][k][l]. Dat is hoe je een array afloopt.
cpp code
De fijnste onderderverdeling staat achteraan.
Ik koos myData[3][2][4][5].
Dat zou dit kunnen zijn: drie gebouwen, met in elk gebouw twee kasten, in elke kast vier laden, en in elke lade vijf stropdassen.
Dat is bij elkaar 3 * 2 * 4 * 5 = 120 stropdassen. En op elke stropdas staat een integer getal geschreven.
Of dit: drie landen, met in elk land twee provincies, in elke provincie vier dorpen, en elk dorp vijf inwoners, en het array geeft het aantal euros dat iedere inwoner heeft.
De index begint bij 0.
Het is dus myData[0...2][0...1][0...3][0...4].
Het belangrijkste deel zijn de vier for-loops in elkaar, met daar binnenin: myData[i][j][k][l]. Dat is hoe je een array afloopt.
cpp code
const int myData[3][2][4][5] =
{
{
{
{ 21, 22, 23, 24, 25 },
{ 121, 122, 123, 124, 125 },
{ 221, 222, 223, 224, 225 },
{ 321, 322, 323, 324, 325 },
},
{
{ 219, 228, 237, 246, 255 },
{ 1219, 1228, 1237, 1246, 1255 },
{ 2219, 2228, 2237, 2246, 2255 },
{ 3219, 3228, 3237, 3246, 3255 },
},
},
{
{
{ -21, -22, -23, -24, -25 },
{ -121, -122, -123, -124, -125 },
{ -221, -222, -223, -224, -225 },
{ -321, -322, -323, -324, -325 },
},
{
{ -219, -228, -237, -246, -255 },
{ -1219, -1228, -1237, -1246, -1255 },
{ -2219, -2228, -2237, -2246, -2255 },
{ -3219, -3228, -3237, -3246, -3255 },
},
},
{
{
{ 1021, 1022, 1023, 1024, 1025 },
{ 10121, 10122, 10123, 10124, 10125 },
{ 10221, 10222, 10223, 10224, 10225 },
{ 10321, 10322, 10323, 10324, 10325 },
},
{
{ 1129, 1128, 1127, 1126, 1125 },
{ 11129, 11128, 11127, 11126, 11125 },
{ 11229, 11228, 11227, 11226, 11225 },
{ 11329, 11328, 11327, 11326, 11325 },
},
},
};
void setup()
{
Serial.begin( 9600);
Serial.println( "Multi-dimensionale arrays");
Serial.print( "myData[1][0][0][4] = ");
Serial.println( myData[1][0][0][4]);
Serial.print( "myData[0][1][3][2] = ");
Serial.println( myData[0][1][3][2]);
Serial.println( "myData:");
for( int i=0; i<3; i++)
{
for( int j=0; j<2; j++)
{
for( int k=0; k<4; k++)
{
for( int l=0; l<5; l++)
{
Serial.print( myData[i][j][k][l]);
Serial.print( ", ");
}
Serial.println();
}
Serial.println( "---");
}
}
}
void loop()
{
}
Re: Elektronische Sleutel IB tag
Ben even info aan het zoeken geweest hoe dimensionale arrays werken.
Denk dat ik nu ongeveer weet hoe ze werken.
ik ga proberen uit te leggen hoe ik er aan kom.
myData[1][0][0][4]
moest ik in gebouw 1 gaan zoeken ( 2 de blok met de - getallen) moest dan in de eerste kast gaan kijken ( getallen -21 tot - 325 ) dan naar lade 0 ( getallen -21 tot -25) dan moest ik de 4de stropdas hebben ( dus denk -25 )
voor het 2de
myData[0][1][3][2]
zou het 3237 moeten zijn
want mijn engels is niet heel goed dus paar keer naar de uitleg gaan kijken .
Als ik juist ben heb je een goed voorbeeld gegeven.
Denk dat ik nu ongeveer weet hoe ze werken.
ik ga proberen uit te leggen hoe ik er aan kom.
myData[1][0][0][4]
moest ik in gebouw 1 gaan zoeken ( 2 de blok met de - getallen) moest dan in de eerste kast gaan kijken ( getallen -21 tot - 325 ) dan naar lade 0 ( getallen -21 tot -25) dan moest ik de 4de stropdas hebben ( dus denk -25 )
voor het 2de
myData[0][1][3][2]
zou het 3237 moeten zijn
want mijn engels is niet heel goed dus paar keer naar de uitleg gaan kijken .
Als ik juist ben heb je een goed voorbeeld gegeven.
22 berichten
• Pagina 1 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten