Ciao
Premesso che ho ben chiaro le funzioni dei bit ma no riesco a fare il seguente :
Ho un array di variabili - Time [8], e di queste variabili vorrei copiare solo il bit “9” nella variabile CodeB , ovvero come esempio l’operazione che vorrei sarebbe questa
Time[0] bit”9” che corrisponda alla bit”0” di codeB
Time[1] bit”9” che corrisponda alla bit”1” di codeB ecc…
Praticamente voglio acquisire gli otto bit dei vari time e trasformarli in un solo byte.
Grazie
Io che non sono pratico con gli operatori bitwise userei le funzioni bitread() e bitwrite().
Se passa qualcuno di quelli bravi magari ti da un esempio anche con gli operatori.
... intanto comincia a chiarire che TIPO di variabili sarebbero e come sono definite (ovvero, ogni singolo elemento Time cosa è?), poi si prosegue al passo successivo.
Ok, quindi la risposta te l'ha già data fratt, senza tante complicazioni vai a leggere il bit che ti interessa con la bitRead(variabile,bit) e quindi lo vai a scrivere nella giusta posizione di codeB con la funzione bitWrite(variabile, numero bit, 0/1) ... non mi sembra complesso ...
Ok grazie ma non riuscivo a comporre la funzione usavo “=“
Non capivo che potevo inserire la funzione bitwrite dentro bitread
E da giovedi che inizio a programmare con arduino scusatemi, sono partito un po’ col botto rispetto al solito pulsante con il led
Di linguaggi ne so ben poco ma le funzioni di Arduino sono abbastanza intuitive e per adesso qualcosa sono riuscito a fare. E poi si trovano decine di sketch da sforbiciare a piacimento.
Volevo chiedere un altro aiutino ma non sapendo se aprire un altro post scrivo qui
Sono riuscito a scrivere il mio primo sketch e funziona, ora siccome è venuto un po lungo e per fare allenamento mi sono costruito la prima libreria che funziona anche quella, ora arrivo al problema:
Quando vado ad aprire un nuovo sketch metto il mio
Quando scrivo l’istruzione if mi da l’errore “CodeB was not declared in this scope”
Mentre CodeB è dentro pippo() perché a monitor seriale mi fa vedere il valore 10 ( ovviamente se non scrivo l’istruzione if)
Spero di essermi spiegato bene
Grazie sempre
Si è dentro “pippo” grazie del consiglio per la lettura , gli darò un occhiata, quello che cercavo di fare e che con il dato salvato dentro “CodeB” mi andavo a scrivere gli sketch senza andare ogni volta a ricopiarmi tutto il listato, non è che saresti così gentile da spiegarmi in modo veloce come posso usare fuori questa variabile?
Grazie
Come dice @nid69ita senza vedere il codice del .h è dura. Anche perché ci sono sicuramente diversi modi per farlo.
Potresti ritornare il valore di CodeB dalla pippo(), oppure creare un metodo apposta solo per leggere la variabile, oppure dichiararla public dentro la classe, oppure...
Ciao @fratt
La variabile l'ho provata sia dentro la class public ma senza risultato ora è messa nel.cpp , purtoppo non ho mai "studiato" sia con assembler che con Pbasic mi sono limitato a seguire delle guide o modificare degli esempi di altri autori. @nid69ita
Ho letto quanto mi hai lincato e ho capito che nei vari livelli le variabili rimangono "volubili" che all'uscita della funzione si azzerano @fratt mi indicheresti qualche esempio per "portarmi in dietro" il valore di CodeB?
#ifndef XXX_H
#define XXX_H
#include <Arduino.h>
class XXX{
public:
//byte CodeB;
XXX(byte);
void pippo();
private:
word Time [8];
byte xxx;
};
#endif
Scherzi a parte, se la variabile la definisci nella sezione public della classe, devi accedere ad essa passando per l'istanza della classe stessa con la notazione nomeIstanza.nomeVariabile
P.S.
E' cosa saggia rispettare le convenzioni per il naming di classi e variabili perché parlare un linguaggio comune è sempre un vantaggio in una community open source (uso del "camel case" per le variabili con la prima lettera in maiuscolo solo per le definizioni di classi proprio come accade con le classi built-in di Arduino oppure in alternativa dello "snake case") .
class MyClass{
public:
MyClass(byte); // Costruttore della classe
byte myVar; // Proprietà della classe
void myMethod(); // Metodo della classe
// ...... etc etc
};
@cotestatnt
Hai ragione e ne sono consapevole
Diciamo che il mio è solo un hobby e studiare il C/C++ a quasi 50 anni è da impazzire.
[/quote]
P.S.
E' cosa saggia rispettare le convenzioni per il naming di classi e variabili perché parlare un linguaggio comune è sempre un vantaggio in una community open source (uso del ** "camel case" ** per le variabili con la prima lettera in maiuscolo solo per le definizioni di classi proprio come accade con le classi built-in di Arduino oppure in alternativa dello** "snake case"**) .
[/quote]
Ecco anche se hai scritto in italiano non ho capito una parola
Comunque a parte lo scherzo provo quanto da te suggeri grazie
P.s. Ho risposto dal cell
ahahhha... allora quello che intendo è che se io e te usiamo lo stesso "stile" per definire classi e variabili, analizzare il tuo sketch per me che leggo e non so esattamente cosa stai facendo, diventa più semplice. Questo è il vantaggio delle convenzioni.
Ad esempio in questo caso, se non aggiungevi il sorgente di xxx.h e xxx.cpp, io per mia abitudine non avrei mai immaginato che CodeB voleva essere una variabile byte della classe xxx.
Se ci fai caso, tutte le funzioni tipiche del "sistema Arduino" usano lo stile cosiddetto "camel case":
mentre quando usi le Classi tipiche Arduino come la String oppure la Serial o SoftwareSerial etc etc, trattandosi di classi, la prima lettera è sempre maiuscola.