Ad ogni modo hai chiamato il file con l'estensione ".c". Non è una bella cosa quanto contiene codice C++, perché potrebbe essere compilato di default dal compilatore sbagliato :).
Matrice [C / C++]
Moderatore:
Paolino
1
voti
Si meglio rimandare a più tardi 
Ad ogni modo hai chiamato il file con l'estensione ".c". Non è una bella cosa quanto contiene codice C++, perché potrebbe essere compilato di default dal compilatore sbagliato :).
Ad ogni modo hai chiamato il file con l'estensione ".c". Non è una bella cosa quanto contiene codice C++, perché potrebbe essere compilato di default dal compilatore sbagliato :).
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
Qualcosa non ha funzionato...
Lo sapete che l'arroganza in informatica si misura in nanodijkstra?
-

fairyvilje
15,0k 4 9 12 - G.Master EY

- Messaggi: 3047
- Iscritto il: 24 gen 2012, 19:23
2
voti
unsigned short
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Grazie
TardoFreak
ho fatto una ricerca su google e ho trovato che bisogna mettere un include
posto il codice, che finalmente il compilatore me lo ha accettato.
ho fatto anche uso di file .h e il puntatore ( this-> )
posto il codice sperando che ciò che ho scritto è conforme alle convenzioni
Mux.h:
Mux.cpp:
Ciò che c'è scritto qui l'ho imparato grazie a voi :) grazie con tutto il cuore e buona pasqua
ho fatto una ricerca su google e ho trovato che bisogna mettere un include
posto il codice, che finalmente il compilatore me lo ha accettato.
ho fatto anche uso di file .h e il puntatore ( this-> )
posto il codice sperando che ciò che ho scritto è conforme alle convenzioni
Mux.h:
- Codice: Seleziona tutto
#include <stdint.h>
class Mux{ // <-- Riga 3 (Sopra ci sono solo degli include)
private:
uint8_t pin[4];
uint16_t firstRead[8];
uint16_t lastRead[8];
uint16_t limitAlarm;
uint16_t limitTamper;
public:
Mux(uint8_t pin0, uint8_t pin1, uint8_t pin2, uint8_t AnalogPin, uint16_t limitAlarm, uint16_t limitTamper);
void readInput();
uint8_t comp();
};
Mux.cpp:
- Codice: Seleziona tutto
#include <Arduino.h>
#include <stdint.h>
#include "Mux.h"
Mux::Mux(uint8_t pin0, uint8_t pin1, uint8_t pin2, uint8_t AnalogPin, uint16_t limitAlarm, uint16_t limitTamper){
this->pin[0] = pin0;
this->pin[1] = pin1;
this->pin[2] = pin2;
this->pin[3] =AnalogPin;
pinMode(pin0,OUTPUT);
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
for(uint8_t in = 0; in<8; in++){
if(in & 1){digitalWrite(pin0,HIGH);}else{digitalWrite(pin0,LOW);}//
if(in & 2){digitalWrite(pin1,HIGH);}else{digitalWrite(pin1,LOW);}
if(in & 4){digitalWrite(pin2,HIGH);}else{digitalWrite(pin2,LOW);}
firstRead[in] = analogRead(this->pin[4]);
}
}
void Mux::readInput(){
for(uint8_t in = 0; in<8; in++){
if(in & 1){digitalWrite(this->pin[0],HIGH);}else{digitalWrite(this->pin[0],LOW);}//
if(in & 2){digitalWrite(this->pin[1],HIGH);}else{digitalWrite(this->pin[1],LOW);}
if(in & 4){digitalWrite(this->pin[2],HIGH);}else{digitalWrite(this->pin[2],LOW);}
lastRead[in] = analogRead(this->pin[4]);
}
}
uint8_t Mux::comp(){
// 0 = tutto ok
// 1 = movimento
// 2 = tamper
// 3 movimento + tamper
for(uint8_t i = 0; i<8;i++){
if(this->firstRead[i] != this->lastRead[i]){
if(this->lastRead[i] == this->limitAlarm){
return 1;
}else{
if(this->lastRead[i] == this->limitTamper){
return 2;
}else{
return 3;
}
}
}
}
return 0;
}
Ciò che c'è scritto qui l'ho imparato grazie a voi :) grazie con tutto il cuore e buona pasqua

-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
Ho solo 2 min ma volevo dire una cosa che il sonno di ieri non mi ci ha fatto pensare.
Bsta dichiarare questa struttura di memoria:
e usarla così:
e basta.
Poi Lines.L1 è la linea 1 Lines.L2 la 2 e Lines.L3 la 27627164782345esima
E' più stiloso e anche più veloce...

Bsta dichiarare questa struttura di memoria:
- Codice: Seleziona tutto
typedef union
{
uint8_t Val : 3;
struct
{
uint8_t L1 : 1;
uint8_t L2 : 1;
uint8_t L3 : 1;
};
} Lines_t;
e usarla così:
- Codice: Seleziona tutto
Lines_t Lines;
Lines.Val = linea;
e basta.
Poi Lines.L1 è la linea 1 Lines.L2 la 2 e Lines.L3 la 27627164782345esima
E' più stiloso e anche più veloce...

Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
-

Shockwaver
770 1 5 11 - Expert

- Messaggi: 859
- Iscritto il: 3 mar 2010, 18:56
0
voti
Shockwaver ha scritto:
- Codice: Seleziona tutto
typedef union
{
uint8_t Val : 3;
struct
{
uint8_t L1 : 1;
uint8_t L2 : 1;
uint8_t L3 : 1;
};
} Lines_t;
ehm ho guardato cosa sono le union, è una struttura dati elastica, solo una cosa
- Codice: Seleziona tutto
uint8_t L3 : 1;
cosa significa? poi perché la struttura dati (struct) non ha un nome?
-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
0
voti
: n è un metodo di dichiarazione chiamato bit-fielding con 'n' indichi il numero di bit sui quali il valore che assegni alla variabile verrà scritto e dai quali verrà letto.
Per cui Val che ha un field di 3 sarà l'insieme delle 3 linee, poi la struct garantisce tre campi, sovrapposti a Val grazie alla union, da un bit l'uno, "spalmati" quindi sui 3 bit di Val.
Una struct senza nome identifica una struct ANONYMOUS, che può essere referenziata senza indicare il nome all'interno della union.
Tutto chiaro?
Per cui Val che ha un field di 3 sarà l'insieme delle 3 linee, poi la struct garantisce tre campi, sovrapposti a Val grazie alla union, da un bit l'uno, "spalmati" quindi sui 3 bit di Val.
Una struct senza nome identifica una struct ANONYMOUS, che può essere referenziata senza indicare il nome all'interno della union.
Tutto chiaro?
Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
-

Shockwaver
770 1 5 11 - Expert

- Messaggi: 859
- Iscritto il: 3 mar 2010, 18:56
0
voti
quindi con i " : " indico quanti bit usare della variabile...
quella struct definita, serve a val che è composta da 3 bit
quella struct definita, serve a val che è composta da 3 bit
-

daniele1996
610 3 8 11 - Sostenitore

- Messaggi: 1554
- Iscritto il: 29 ago 2011, 11:29
1
voti
esatto.
E non quotare per rispondere.
E non quotare per rispondere.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
1
voti
Non serve a Val. Serve a te per poter dare un nome ai 3 bit di Val. Val fieldata a 3 potrebbe benissimo esistere senza quella struct... Capito?
Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
-

Shockwaver
770 1 5 11 - Expert

- Messaggi: 859
- Iscritto il: 3 mar 2010, 18:56
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)