Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Matrice [C / C++]

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

1
voti

[61] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 3:10

Si meglio rimandare a più tardi :D

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? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

0
voti

[62] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 11:09

error: 'uint16_t' does not name a type come posso definirlo?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

2
voti

[63] Re: Matrice [C / C++]

Messaggioda Foto UtenteTardoFreak » 20 apr 2014, 11:16

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.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[64] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 11:23

Grazie Foto UtenteTardoFreak
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 O_/
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

0
voti

[65] Re: Matrice [C / C++]

Messaggioda Foto UtenteShockwaver » 20 apr 2014, 11:26

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:
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 :lol:
E' più stiloso e anche più veloce...
O_/
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
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

0
voti

[66] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 11:32

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?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

0
voti

[67] Re: Matrice [C / C++]

Messaggioda Foto UtenteShockwaver » 20 apr 2014, 11:36

: 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?
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
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

0
voti

[68] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 11:41

quindi con i " : " indico quanti bit usare della variabile...
quella struct definita, serve a val che è composta da 3 bit
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

1
voti

[69] Re: Matrice [C / C++]

Messaggioda Foto UtenteTardoFreak » 20 apr 2014, 11:43

esatto. :ok:

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.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[70] Re: Matrice [C / C++]

Messaggioda Foto UtenteShockwaver » 20 apr 2014, 11:46

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
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti