-toiminnon käyttö on ensimmäinen manuaalisesti kirjoitettu koodi. ”Olen varma, että siinä voi olla joitain räikeitä” koulupoikavirheitä ”, joten ihmettelin, voisivatko ihmiset antaa sille” kerran ”.Erityisesti en ole koskaan käyttänyt C ++ – taulukoita, tallentanut binääritietoja sisälle ja yrittänyt sitten lukea niitä vähän bitillä. Perlissä paljon helpompaa; sinun tarvitsee yksinkertaisesti käyttää moniulotteista jotain tällaista:
@code1=("10101010", "01010101"); $bit=$code1[0][0] (..through to..) code1[0][7] $bit=$code1[1][0] ... code1[1][7]
Joten tämä on minun Arduino-koodini. Tervetuloa ehdotuksiin .
int pinArray[]={2,3,4,5,6,7,8,9}; int code1[]={B10101010, B01010101,B10101010, B01010101,B10101010, B01010101}; int count=0; int split=0; // Counter for the bit loop int led; // Store bit data byte x; // Used to store the binary data in code1 void setup(){ for (count=0; count<8; count++){ pinMode(pinArray[count],OUTPUT); // Sets pinMode as output on pinArray pins ] } void loop(){ for (count=0; count<6; count++){ x=code1[count]; ledDisplay(x); } } void ledDisplay(){ for (split=7; split>=0; split--){ led=bitRead(x,split); if (led == 1){ digitalWrite(split+2,HIGH); } else{ digitalWrite(split+2,LOW); } } }
Oletko juuri muuttanut jakoa, koska toteutunut bitti on vasemmanpuoleisin luku. Jaossa lisäämään arvoon 2. Onko tämä liitettävä suluissa, ts. (split + 2)?
Kommentit
- Sisältösi ovat hämmentäviä. Paina Ctrl + T
- Kun minä kirjoita koodi tekstieditoriin, käytän sarkainnäppäintä koodin sisennykseen, jotta " " -sulkeissa jne. samassa sarakkeessa (joka näyttää näyttävän oikein työpöydän selaimessani – ehkä ehkä väärin puhelimessa – joten käyttää CRTL + t: tä f uture lähetettäessä. (Tiedän, että CODE1 ei noudata samaa käytäntöä, mutta yritän pitää auki / kiinni samalla rivillä, jotta se ei ' t ' törmää ' seuraavaan ryhmään, pitäen mielessä, että minulla on 14 tällaista taulukkoa) Tämä ei ole ' t tarkoitus olla ' ilkeä ' sinulle, koska arvostan sitä, että viittit aikaa avuksi, vain näytät henkilökohtainen ' nimeämistapa '
- Ctrl-T on vain nopea tapa saada koodi oikein sisennetty mikä tahansa on IDE ': n oletustyyli. Sinun ei kuitenkaan tarvitse käyttää sitä '. Voit käyttää mitä tahansa haluamaasi sisennystyyliä , jos käsittelet sitä manuaalisesti. Vaihtoehtoisesti voit määrittää IDE: n suosikkityylillesi . Varmista vain, että omistat yhden luetelmakohdan tyylin ja käytät sitä johdonmukaisesti.
Vastaa
Virheitä on vain kaksi voi havaita ohjelmasi:
-
Koodilohko tulisi rajata kiharoilla aaltosulkeilla:
for (count=0; count<8; count++){ pinMode(pinArray[count],OUTPUT); } // ← ‘}’ instead of ‘]’
-
Jos funktio odottaa saavansa argumentteja, ne on ilmoitettava parametreina funktion prototyypissä:
void ledDisplay(byte x){ // ← mind the “byte x” // ... }
Tämän lisäksi tässä muutama ehdotus koodin näyttämiseksi mukavampi ja toivottavasti ylläpidettävämpi:
- sisennä johdonmukaisesti
- käytä
const
vakioiden määrittämiseen - käytä nimettyjä vakioita maagisten numeroiden sijaan
- pidä muuttujat paikallisena, jos mahdollista
- huomaa, että int, joka on joko 0 tai 1, vastaa loogista arvoa
- käytä
pinArray[]
nastojen käyttämistä varten
Käytä Näiden ehdotusten perusteella saan seuraavan:
const int PIN_COUNT = 8; const int pinArray[PIN_COUNT] = { 2, 3, 4, 5, 6, 7, 8, 9 }; const int CODE_COUNT = 6; const int code1[CODE_COUNT] = { B10101010, B01010101, B10101010, B01010101, B10101010, B01010101 }; void setup() { for (int count = 0; count < PIN_COUNT; count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { for (int count = 0; count < CODE_COUNT; count++) { ledDisplay(code1[count]); } } void ledDisplay(byte x) { for (int split = 7; split >= 0; split--) { if (bitRead(x, split)) { digitalWrite(pinArray[split], HIGH); } else { digitalWrite(pinArray[split], LOW); } } }
Kommentit
- Toivon kerran rehellisesti, että minulla olisi kyky äänestää vastausta. Olet antanut minulle erittäin rakentavia neuvoja sen sijaan, että osoittaisit vain täällä tai siellä. ("] " oli vain kirjoitusvirhe, mutta kiitos huomautuksesta) Pidän myös boolen kommentista, joka tallentaa muutama tavu. Tutkin nyt " const " nähdäksesi, mitä se tarkalleen tekee … Jälleen, olen rehellisesti kiitollinen syvällisestä palautteestasi / li>