Pages: [1]   Go Down
Author Topic: Hashmap  (Read 551 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti. Come si capisce dal titolo ho un problema riguardante la programmazione. Sto realizzando una classe e avrei bisogno di utilizzare un hashmap<String,int> avete qualche idea se esista una libreria che mi permetta di utilizzare un tipo di dato Hashmap?

P.S:
Ho trovato sul sito una libreria, ma secondo me è un pò vecchiotta perché per farla funzionare ho dovuto sostituire in HashMap.h l'include di "WProgram.h" con "Arduino.h".
Grazie...
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao Antonio

quella su playground mi pare l'unica libreria che abbia oggetti Hashmap per arduino.
Spesso però utilizzare oggetti "comodi" a cui magari siamo abituati in C# o Java anche nella programmazione di Arduino comporta un (inutile) spreco di memoria RAM... nel tuo sketch è indispensabile l'uso di una Hashmap?
bye
Logged

lucadentella.it

Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per avermi risposto! In pratica ho un programma che fa delle cose e ad un certo punto devo utilizzare dei pin di output e di input ma questi vengono fuori dalle considerazioni fatte dal programma. Avevo pensato di utilizzare un hashmap<String,int> del tipo <"circuito lampada",3> ad esempio sapevo che sull'ingresso 3 c'è un relè che comanda la lampada, poi ad esempio <"sensore movimento",9> così sapevo che sul pin 9 è collegato in ingresso un sensore di movimento. Però se mi porta via molta memoria vedo di implementare il tutto in maniera diversa. Avresti qualche soluzione in merito?
Grazie ancora...
Logged

0
Online Online
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

usa una matrice a 2 dimensioni di tipo int
matrice[2][numero elementi]

nell'indice
  • avrai il valore int dell'hash (un hash molto semplice per le stringhe è sommare tra loro tutte le lettere, che come sai secondo la tabella ascii corrispondono ad un numero)
nell'indice [1]
  • avrai il valore da dare in pasto al puntatore della classe (nel tuo caso vuoi un int e quindi nessun problema)

volendo al posto della matrice puoi usare 2 array "paralleli"

poi copn la realloc puoi rendere dinamico questo array....

ma secondo me non conviene avere una struttura così complessa.
fai una struttura che contiene String e int, e poi fai una lista (le liste sono un discorso base del c che si fanno per comprendere i puntatori... trovi mille guide ed esempi)
consiglio questa via, è quella da dove imparerai molte cose interessanti E ottieni un codice più ottimizzato (ed essendo arduino mooolto limitato...)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

quindi l'associazione PIN/significato è dinamica?

potresti definire delle costanti per i significati possibili, es

Code:
#define LAMPADA 1
#define RELAY 2
#define TEMPERATURA 3

e, avendo un numero finito di PIN, usare un semplice array con il seguente significato:
- posizione array = PIN di Arduino
- valore dell'elemento = significato del pin

quindi con un codice tipo

Code:
switch(mioArray[1]) {
 case LAMPADA: ... break;
 case RELAY: ... break;
}

vai a capire che significato ha il PIN 1 di Arduino...

può andare in base a quanto ho capito che ti serve?

Logged

lucadentella.it

Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie luca la soluzione era molto banale ma non ci avevo proprio pensato. Abituato a linguaggi più complessi!!  smiley-mr-green
Logged

Pages: [1]   Go Up
Jump to: