Maken met behulp van een oscilloscoop de SainSmart Mega2560 met het TFT LCD schild en de 3.5 "aanraakscherm in kleur (6 / 8 stap)

Stap 6: De oscilloscoop


Hieronder vindt u de schets voor de oscilloscoop. Voordat we kopiëren en plakken van het programma, laten we enkele beperkingen controleert en verklaart het programma.

Ik heb te doen een behoorlijke hoeveelheid onderzoek om te komen met de code, en veel fragmenten hebben "geleend" van verschillende bronnen.

Ik onderverdeeld het programma in verschillende subrutines om het gemakkelijker te begrijpen. De code is goed gedocumenteerd, maar als je problemen hebt begrijpen, laat een reactie en ik zal proberen uit te leggen.

De oscilloscoop bandbreedte is beperkt tot ongeveer 1 khz, maar er is ruimte voor verbetering.

De ingang is beperkt tot een 5 volt piek tot piek golfvorm, tenzij u een scheidingslijn spanning bij de ingang, en ook beperkt tot positieve golfvormen van 0 tot 5 volt.

Ik gebruikte sommige code die ik gevonden op: http://www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ aan de ADC monster tijd aanpassen.

De grafische en touch functies werden bewerkt, en geleend, van de Henning Karlsen voorbeelden in zijn bibliotheken.

Ik gebruikte een spanningsregelaar LM 317, en een 555 timer IC als een astable ocillator, maken de signalen gebruikt voor het testen van de oscilloscoop input.

Hoop dat je genoten hebt van het lezen en hopelijk bouwen dit instructable. Als u het nuttig vinden, please vote voor me in de wedstrijden.

Opmerking: Ik opgenomen de sKetch, de UTFT en de bibliotheken van de UTouch in het libraries.zip bestand voor degenen onder u problemen.

Kopiëren en plakken van de schets aan de Arduino IDE

---START PROGRAMMA
/*--------------------------------------------------------------
Programma: OscopetouchLCDmega

Omschrijving: Digitale oscilloscoop met gegevens weergegeven
op kleur TFT LCD-scherm met touchscreen

Hardware: sainsmart mega2560 bord met 3,5-inch tft lcd aanraking module weergeven en schild kit
http://www.sainsmart.com/Home-Page-View/sainsmart...

Software: Ontwikkeld met behulp van de Arduino 1.0.3 software
Dit programma vereist de UTFT-bibliotheek en de
UTouch bibliotheek van Henning Karlsen.
Web: http://www.henningkarlsen.com/electronics
Versie 1.00
Datum: 5 April 2014

Auteur: johnag
--------------------------------------------------------------*/

#include
#include
Verklaren welke lettertypen die we zullen gebruiken
extern uint8_t SmallFont [];
Initialiseren van scherm en touch functies
UTFT myGLCD(ITDB32S,38,39,40,41);
UTouch myTouch(6,5,4,3,2);
Variabelen declareren
char buf [12];
int x, y;
int Input = 0;
byte monster [320];
byte OldSample [320];
int StartSample = 0;
int EndSample = 0;
int Max = 100;
int Min = 100;
int modus = 0;
int rekenwijze = 1;
int tmode = 0;
int Trigger = 0;
int SampleSize = 0;
int SampleTime = 0;
int dgvh;
int hpos = 50; set 0v op horizontaal raster
int vsens = 4; verticale gevoeligheid

Definiëren van verschillende ADC prescaler
Const unsigned char PS_16 = (1 << ADPS2);
Const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
Const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);
Const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

---Start Subrutines---
---tekenen knoppen sub
ongeldig buttons() {}
myGLCD.setColor (0, 0, 255);
myGLCD.fillRoundRect (250, 1, 310, 50);
myGLCD.fillRoundRect (250 55, 310, 105);
myGLCD.fillRoundRect (250 110, 310, 160);
myGLCD.fillRoundRect (250, 165, 310, 215);
}
---touchscreen positie sub
ongeldig touch() {}
terwijl (myTouch.dataAvailable())
{
myTouch.read();
x=MyTouch.getX();
y=MyTouch.getY();
delay(500);
Als ((y > = 1) & & (y < = 50)) / / vertraging van rij
{
Als ((x > = 250) & & (x < = 300)) / / vertraging knop
waitForIt (250, 1, 310, 50);
modus = wijze ++;
{
myGLCD.setColor (255, 0, 0);
myGLCD.drawRoundRect (250, 1, 310, 50);
Selecteer vertragingstijden
Als (modus == 0) rekenwijze = 0;
Als (modus == 1) rekenwijze = 1;
Als (modus 2 ==) rekenwijze = 2;
Als (modus == 3) rekenwijze = 5;
Als (modus == 4) rekenwijze = 10;
Als (modus == 5) rekenwijze = 20;
Als (modus == 6) rekenwijze = 30;
Als (modus == 7) rekenwijze = 50;
Als (modus == 8) rekenwijze = 100;
Als (modus == 9) rekenwijze = 200;
Als (modus == 10) rekenwijze = 500;
Als (modus > 10) modus = 0;

}}

Als ((y > = 70) & & (y < = 120)) / / activeren van rij
{
Als ((x > = 250) & & (x < = 300)) / / Trigger knop
waitForIt (250 55, 310, 105);
tmode = tmode ++;
{
myGLCD.setColor (255, 0, 0);
Selecteer Software trigger waarde
myGLCD.drawRoundRect (250 55, 310, 105);
Als (tmode == 1) Trigger = 0;
Als (tmode == 2) Trigger = 10;
Als (tmode == 3) Trigger = 20;
Als (tmode == 4) Trigger = 30;
Als (tmode == 5) Trigger = 50;
Als (tmode > 5) tmode = 0;
}}
Als ((y > = 130) & & (y < = 180)) / / H rij positie
{
Als ((x > = 250) & & (x < = 300)) / / H positie knop
waitForIt (250 110, 310, 160);
hpos = hpos ++;

{
myGLCD.setColor (255, 0, 0);
myGLCD.drawRoundRect (250 110, 310, 160);
myGLCD.clrScr();
Buttons();
Als (hpos > 60) hpos = 50;
}}}}
---wachten voor aanraking sub
VOID waitForIt (int x1, int y1, int x2, int y2)
{
terwijl (myTouch.dataAvailable())
myTouch.read();
}
---tekenen raster sub
VOID DrawGrid() {}

myGLCD.setColor (0, 200, 0);
voor (dgvh = 0; dgvh < 5; dgvh ++) {}
myGLCD.drawLine (dgvh * 50, 0, dgvh * 50, 240);
myGLCD.drawLine (0, dgvh * 50, 245, dgvh * 50);
}
myGLCD.drawLine (245 0, 245, 240);
myGLCD.drawLine (0, 239, 245, 239);
myGLCD.setColor (255, 255, 255);
myGLCD.drawRoundRect (250, 1, 310, 50);
myGLCD.drawRoundRect (250 55, 310, 105);
myGLCD.drawRoundRect (250 110, 310, 160);
myGLCD.drawRoundRect (250, 165, 310, 215);

}
---Gewacht op invoer groter dan trigger sub van
ongeldig trigger() {}

terwijl (Input < Trigger) {Input = analogRead (A0) * 5/100;
}}

---Einde Subrutines---

VOID Setup {}
myGLCD.InitLCD();
myGLCD.clrScr();
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
Buttons();
pinMode (0, INPUT);
instellen van de ADC
ADCSRA & = ~ PS_128; verwijderen van de bits ingesteld door Arduino library

u kunt een prescaler van onderen.
PS_16, PS_32, PS_64 of PS_128
ADCSRA | = PS_64; onze eigen prescaler instellen
}
void loop {}

while(1) {}
DrawGrid();
Touch();
trigger();

De analoge gegevens verzamelen in een array

StartSample = micros();
voor (int xpos = 0;
xpos < 240; xpos ++) {monster [xpos] = analogRead (A0) * 5/102;
delayMicroseconds(dTime);
}
EndSample = micros();

De verzamelde analoge gegevens uit array weergeven
voor (int xpos = 0; xpos < 239;
xpos ++)
{
Vorige weergave wissen
myGLCD.setColor (0, 0, 0);
myGLCD.drawLine (xpos + 1, 255-OldSample [xpos + 1] * vsens-hpos, xpos + 2, 255-OldSample [xpos + 2] * vsens-hpos);
Als (xpos == 0) myGLCD.drawLine (xpos + 1, 1, xpos + 1, 239);
Tekenen van de nieuwe gegevens
myGLCD.setColor (255, 255, 255);
myGLCD.drawLine (xpos, 255-monster [xpos] * vsens-hpos, xpos + 1, 255-monster [xpos + 1] * vsens-hpos);
}
Bepalen van monster spanning piek tot piek
Max = monster [100];
Min = monster [100];
voor (int xpos = 0;
xpos < 240; xpos ++)
{
OldSample [xpos] = monster [xpos];
Als (monster [xpos] > Max) Max = monster [xpos];
Als (monster [xpos] < Min) Min = monster [xpos];
}
weergeven van de tijd van de steekproef, de vertragingstijd en trigger niveau
myGLCD.setBackColor (0, 0, 255);
myGLCD.setFont (SmallFont);
myGLCD.setBackColor (0, 0, 255);
myGLCD.print ("vertraging", 260, 5);
myGLCD.print ("", 270, 20);
myGLCD.print (itoa (rekenwijze, buf, 10), 270, 20);
myGLCD.print ("Trig.", 260, 60);
myGLCD.print ("", 270, 75);
myGLCD.print (itoa (Trigger, buf, 10), 270, 75);
myGLCD.print ("H Pos.", 260, 120);
myGLCD.print (itoa (hpos, buf, 10), 270, 135);
myGLCD.setBackColor (0, 0, 0);
SampleTime = (EndSample-StartSample) / 1000;
myGLCD.print ("Sec.", 205, 210);
myGLCD.print ("", 280, 30);
myGLCD.print (itoa (SampleTime, buf, 10), 205, 220);
Bereik van 0 tot 64 * 78 = 4992 mV
SampleSize (Max-Min) = * 78;
myGLCD.print ("mVolt", 5, 210);
myGLCD.print (itoa (SampleSize, buf, 10), 5, 220);
myGLCD.print (itoa (analogRead (A0) * 4.15 / 10.23, buf, 10), 110, 220);

}}

---EINDE PROGRAMMA

Gerelateerde Artikelen

Met behulp van een DC-DC Verstelbare regulator voor het aandrijven van een lading

Met behulp van een DC-DC Verstelbare regulator voor het aandrijven van een lading

Vandaag zal ik je laten zien hoe met een DC-DC regulator.Stap 1: Dingen die nodig zijnHet ding dat u zult moeten zijn:een DC-DC regulatorIk kocht de mijne van amazon.comhttp://www.Amazon.com/DROK-Converter-regulator-tra...Een multimeter om te control
Met behulp van een Dot Matrix LED met een Arduino en Shift Register

Met behulp van een Dot Matrix LED met een Arduino en Shift Register

de Siemens DLO7135 Dot matrix LED is een verbazingwekkend stukje opto-elektronica. Het is gefactureerd als een 5 x 7 Dot Matrix intelligente Display (r) met geheugen/Decoder/Driver. Samen met dat het geheugen, het heeft een 96-ASCII karakterdisplay s
Geanimeerde Halloween weergeven met behulp van een elektrische motor en een fiets

Geanimeerde Halloween weergeven met behulp van een elektrische motor en een fiets

hier is een manier om een geanimeerde Halloween display, met behulp van meestal dingen die u al hebt rond het huis.  Ik powered de weergave met behulp van een kleine elektromotor krom tot aan het achterwiel van mijn fiets, en addertjes onder het gras
Laptop Cooling Stand (met behulp van een 2 x 6)

Laptop Cooling Stand (met behulp van een 2 x 6)

Mijn HP Zbook is een fatsoenlijke laptop, maar plaatsen op het bed of op mijn schoot terwijl gebruiken heeft de neiging om het te krijgen warm. Dus ik begon met behulp van een stukje triplex als stand maar het zag er niet geweldig en het was te zwaar
Hoe schil een Kiwi met behulp van een lepel

Hoe schil een Kiwi met behulp van een lepel

wie heeft ooit een kiwi, snijden of gewoon eten, geschild, weet dat het een kleverige, prickly, hoofdpijn kan zijn. Dit toont aan hoe eenvoudig het kan zijn om de schil van een snel en gemakkelijk met een lepel.Stap 1: Waarom een lepel? Laat eerst ee
Fiets stam adapter voor stuurhouder van de computer met behulp van een wijn kurk

Fiets stam adapter voor stuurhouder van de computer met behulp van een wijn kurk

Dit instructable toont hoe maak je een adapter om uw fietscomputer of houdt van het stuur aan de stengel. Ik moest doen omdat ik opraken van de ruimte op het stuur, en het werkte prima!Benodigde materialen:1) 1 x wijn kurk (kan worden werkelijke kurk
Hoe te bedriegen op Schaken met behulp van een iphone of ipod touch

Hoe te bedriegen op Schaken met behulp van een iphone of ipod touch

dit is een instructables op welke manier voor zwendelaar op Schaken met behulp van een iphone of ipod touchhet duurt ongeveer een minuite te krijgen lopenGeen jailbreaking vereistZijn waanzinnig eenvoudig en zal je winnen bij Schaken tegen de meeste
Hoe te onthouden van het OSI Model lagen met behulp van een ezelsbruggetje JPEG en PDF-bestanden

Hoe te onthouden van het OSI Model lagen met behulp van een ezelsbruggetje JPEG en PDF-bestanden

Hoe te onthouden van het OSI-lagen met behulp van een eenvoudige memo.  Ik heb het werkblad gemaakt voor mijn netwerk + klas op Per Scholas in de South Bronx.  In JPEG en PDF formaten.
Het maken van een einde-korrel snijplank - ik maakte het op Techshop

Het maken van een einde-korrel snijplank - ik maakte het op Techshop

hieronder zijn verschillende snijplanken die ik bij Techshop, San Francisco, een lidmaatschap op basis workshop met alle soorten van hulpmiddelen gemaakt heb voor het maken van dingen. Ik heb niet veel ervaring met houtbewerking, dus ik dit project g
Maken van een jurk met behulp van een commerciële patroon of leren van de taal van naaien

Maken van een jurk met behulp van een commerciële patroon of leren van de taal van naaien

Niet iedereen kan of zal maken hun eigen patroon naaien. Veel mensen willen gewoon weten hoe om te naaien iets draagbaar, met behulp van een commerciële patroon. Ik leer begin naaien voor volwassenen (voor het grootste deel) door middel van onze scho
Architectonisch Model maken met behulp van een Laser Cutter

Architectonisch Model maken met behulp van een Laser Cutter

veel dingen kunnen worden ontworpen in drie dimensies met behulp van 3D modeling software zoals Google Sketchup, een gratis 3D modeling programma gebruikt door het platform studenten overal. Met de hulp van dergelijke programma's, kunnen het platform
Met behulp van een laser cutter/graveur te maken een Hawai'ian steelgitaar

Met behulp van een laser cutter/graveur te maken een Hawai'ian steelgitaar

de steelgitaar Hawai'ian biedt de handtekening muzikale geluid van Hawaï. Het meest voorkomende type Hawai'ian steelgitaar heeft een stevige behuizing vervaardigd uit een enkele plank van hout en een elektrische pickup gebruiken voor het detecteren v
Flexibele printplaten met behulp van een 3D-Printer maken

Flexibele printplaten met behulp van een 3D-Printer maken

U kunt etch flexibele printplaten met behulp van een 3D-printer. Zij kunnen bestaan uit zeer dunne koperen geklede plaatmateriaal of zelfs geleidende stof.Standaard koper geplateerd printplaat materiaal (FR4) van elke dikte, ook kan worden geëtst met
RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

ik geniet van zowel Geocaching en elektronica en heb een paar van elektronische puzzel caches met behulp van een Arduino.Mijn nieuwste creatie (met de hulp van een collega cacher voor de code) is met behulp van een Arduino en RFID lezer te maken van