ATtiny Chronograph (6 / 8 stap)

Stap 6: Code. Tot slot.


Oke, nu zijn we eindelijk klaar om te laden van de eigenlijke code. Kopieer en plak deze code in de IDE. Vervolgens, ga naar de 13e regel, waar pgt is ingesteld op 250000. Verandering de 250000 naar 1000000 / (12 / afstand) waar de afstand is de afstand tussen de gaten van de laatste stap. Gebruik geen decimalen, door op het dichtstbijzijnde gehele getal.

Booleaanse ts;
int value01 = 0; de waarde van de //the in de tiende plaats
byte value10 = 0; //value in de tientallen plaatsen
unsigned long anaval; //value in de plaats
byte-waarde = 0; / / test waarde moet worden weergegeven
Const int val = 40; de vertraging
lange temp;
Booleaanse extra10; //these zijn net waar we willen het decimaalteken
Booleaanse extra1;
Boolean extra;
niet-ondertekende lang; //the micros() waarde op het moment van onderbreken
unsigned long lasttime;
unsigned int pgt = 250000; het nummer van de 3 duim tussen photogates. Als dit aantal wordt weergegeven, betekent dit er is een fout opgetreden, en geen tijdsinterval werd opgenomen.
berekend als 1000000/(12/distanceininches). geeft uitvoer in ft/sec
geen drijvers gebruiken om ruimte te besparen (theres heel weinig over de 2313)
VOID Setup {}
DDRB = B11111111; //sets poort B naar uitvoer (de meeste pinnen aan de linkerzijde)
DDRD = B1110000; //sets de 3-pins die de cijfers naar buiten, alle anderen in te schakelen.
DDRA = B000; Als met behulp van een externe oscilator, Don't mess with poort A, reset en oscillator.
PORTD = B0001111;
PORTA = B000;
attachInterrupt (1, stv, stijgt); //we alleen wilt onderbreken op de eerste poort, we don't care over de tweede nog.
}

void loop {}
istobig (); //these drie output alleen het nummer. De timing is gedaan in de interrupts
divide();
sendout();
}
VOID stv() {//starts timing en hecht de juiste onderbreken
tijd = micros (); //if u de code, dit altijd wijzigen moeten in dezelfde volgorde staan als stopv(). Anders zal het verschil tussen het breken van de poort en het opnemen van de tijd anders, en dus verknoeien het resultaat.
attachInterrupt (0, stopv, RISING); //set een voor de andere interrupt-pin
detachInterrupt (1); //and uitschakelen deze, tot de andere interrpt is struikelde
}
ongeldig stopv() {}
lastTime = micros (); //this moet dezelfde bewerking, en in dezelfde plaats als time=micros() hierboven.
anaval = pgt / (abs(lasttime-time)/10); //do de wiskunde om ft/sec
attachInterrupt (1, stv, stijgt); //reattach de interrupt start de timer,
detachInterrupt(0); en deze te verbreken.
}

VOID istobig() {//checks als het getal te groot is. Als het is, vermindert het het dienovereenkomstig. (met een factor 10);
Temp = anaval;
Als (temp > 1000) {}
extra = 1;
temp = temp/10;
} else {}
extra = 0;
}
Als (temp > 1000) {}
extra1 = 1;
temp = temp/10;
} else {}
extra1 = 0;
}
Als (temp > 1000) {}
extra10 = 1;
temp = temp/10;
} else {}
extra10 = 0;
}}
ongeldig divide() {}
value01 = temp; //sets tienden tussen 0 en 900
waarde = temp/10; //sets degenen tussen 0 en 90
value10 = temp/100; //sets tientallen tussen 0 en 9
waarde = int (waarde); //rounds de variabelen
value10 = int(value10);
value01 = int(value01);
value01 = value01 - (waarde * 10); //removes alles behalve de tienden-plaats-cijfer
waarde = waarde - (value10 * 10); //removes alles behalve het degenen-plaats-cijfer
}
ongeldig sendout() {}
extra * = 4;
PORTD = B0001111;
Temp = value01;
output();
PORTD = B1001111;
delayMicroseconds(val);
extra = extra1 * 4;
PORTD = B0001111;
temp = waarde;
output();
PORTD = B0101111;
delayMicroseconds(val);
extra = extra10 * 4;
PORTD = B0001111;
Temp = value10;
output();
PORTD = B0011111;
delayMicroseconds(val2);
geen vertraging nodig, de wiskunde duurt lang genoeg
}
VOID output() {//sets portB gebaseerd op het nummer moet worden weergegeven
switch(temp) {}
Case 0:
PORTB = B00000101 - extra; extra voegt een decimaalteken.
breken;
Case 1:
PORTB = B11011101 - extra;
breken;
Case 2:
PORTB = B01000110 - extra;
breken;
Case 3:
PORTB = B01010100 - extra;
breken;
Case 4:
PORTB = B10011100 - extra;
breken;
Case 5:
PORTB = B00110100 - extra;
breken;
Case 6:
PORTB = B00100100 - extra;
breken;
Case 7:
PORTB = B01011101 - extra;
breken;
zaak 8:
PORTB = B00000100 - extra;
breken;
Case 9:
PORTB = B00011100 - extra;
breken;
}}

Gerelateerde Artikelen

ATtiny 85 leidde Ladder spel

ATtiny 85 leidde Ladder spel

Eerste f alle wil ik erop wijzen dat dit project is niet gemaakt door mij, (ik heb het apparaat komt te staan hier na een ander instructable). Het enige doel van dit instructable moet corrigeren van veel van de fouten die het vorige project had. Dit
Een ATtiny met Arduino Program

Een ATtiny met Arduino Program

volgt zijn aanwijzingen voor het programmeren van de ATtiny microcontrollers met behulp van de Arduino IDE. In gewoon Engels is dit hoe te programmeren 8-pins Atmel chips zoals u normaal een Arduino. Dit is cool, omdat de ATtiny klein is, en - goed -
Fish out of Water - ATtiny bestuur gebruikt met Arduino

Fish out of Water - ATtiny bestuur gebruikt met Arduino

FishBowl is een kleine microcontroller board programmeerbare met behulp van de Arduino software.  Het heeft een batterij zodat u het vervolgens zonder het grotere moederbord van de Arduino gebruiken kunt.  Het is als een kleine Arduino kan worden mee
Cloud nachtlampje W / ATTiny geanimeerde

Cloud nachtlampje W / ATTiny geanimeerde

Dit Instructable toont u hoe te maken van een handige Arduino (ATTiny) aangedreven geanimeerde nacht licht. Dit ontwerp maakt gebruik van goedkope LED strips in 3 afzonderlijke circuits. De 'zon' LEDs blijven constant, terwijl de 2 'cloud' LEDs langz
TinyANN, kunstmatig neuraal netwerk voldoet aan ATTINY

TinyANN, kunstmatig neuraal netwerk voldoet aan ATTINY

Dames en heren,Welkom bij mijn eerste instructable. Het is een lange tijd, die ik volg deze uitstekende site. Ik leer veel van deze Gemeenschap en ik wil weer terug de gunst door mijn eigen bijdrage te publiceren.Voor de Engelsen ik verontschuldig me
Programmering de ATtiny

Programmering de ATtiny

dit is een tutorial voor het programmeren van een ATtiny-chip. Deze tutorial zal meer in de diepte dan de meeste. Ik zal u elke stap en vertel u de dingen niemand vertelde me dat toen ik voor het eerst begonnen ATtiny programmeren.Wat die u nodig heb
Hoe te programmeren een ATtiny 85 Digispark

Hoe te programmeren een ATtiny 85 Digispark

Dus, waarom een andere 'How to' over de ATtiny 85?Voornamelijk om te verduidelijken vermijden belangrijke stappen die kunnen helpen de problemen van zovelen, met fouten als volgt:"avrdude: stk500_getsync(): niet synchroon: resp 0x00 =""avrd
Vuil goedkoop ATtiny-85 Tv-B-Gone(switches off any TV!), vermeerderd met arduino als isp

Vuil goedkoop ATtiny-85 Tv-B-Gone(switches off any TV!), vermeerderd met arduino als isp

De TV-B-Gone is een geweldig stukje techniek en codering. Samen met de toepasselijke naam klein, AT-klein, kunnen we een geweldige universele afstandsbediening die van elke TV veranderen kan. Dit werd oorspronkelijk verkocht als een bouwpakket, maar
7 segment Digitale Thermometer met ATtiny 85

7 segment Digitale Thermometer met ATtiny 85

dit is een complete DIY project waarvoor een handvol componenten zoals de ATtiny 85, LM35, MAX7219 en een paar weerstanden en condensatoren uitgevoerd uit een gereglementeerde 5 V aanbod.Temperatuur meetbereik: 0 tot 150' C32 tot 300' FController: AT
Repareren van dode AVR - Attiny fusebit arts (HVSP)

Repareren van dode AVR - Attiny fusebit arts (HVSP)

heeft u een fout maakt tijdens het programmeren van fusebits, of met opzet gehandicapten reset pin (RSTDISBL) of ISP programmering (SPIEN)? Geen behoefte te kopen of ongelegen programmeur van de HV alleen voor ontgrendelen paar Tiny AVR van te maken.
Steampunk Audio & Chronograph Station

Steampunk Audio & Chronograph Station

dank aan allen voor uw zeer creatieve ontwerpen en projeccts, hebben jullie allemaal inspireerde mij om te bouwen van mijn eigen Steampunk Audio & Chronograph Station.  Dit project kostte me WAAAY langer dan ik verwacht en ging weg over de begroting,
Supercondensator programmeerbare Attiny LED zaklamp

Supercondensator programmeerbare Attiny LED zaklamp

Lange tijd geleden, zag ik dat sommige stuurprogramma's in zaklampen Attiny microcontrollers gebruiken om te gaan met verschillende modi. Op dat moment had ik geen arduino en ik wist niet hoe te programmeren een.De tijden zijn veranderd en mijn vaard
ATtiny V-USB Project Board

ATtiny V-USB Project Board

CONCEPTDe Paperduino Tiny is een grote kleine project. Maar ik wilde iets een beetje meer robuust, met een kleine prototyping projectgebied, maken gebruik van een aangepaste PCB van 60 x 40 mm in grootte.Dit is het resultaat.Stap 1: schematischSchema
2-draads LCD-interface voor Arduino of Attiny

2-draads LCD-interface voor Arduino of Attiny

LCD's in het algemeen behoefte 11signal lijnen + 3 of 5 lijnen voor de Vcc, grond en contrast en in sommige gevallen een extra 2 voor achtergrondverlichting.Met behulp van het LCD-scherm in 4 bitsmodus bespaart 4 pins, maar vaak is dat niet genoeg. H