Faire un Oscilloscope à l’aide de la SainSmart Mega2560 avec l’écran TFT LCD et 3.5 "écran tactile couleur (6 / 8 étapes)

Étape 6: L’Oscilloscope

Ci-dessous, vous trouverez l’esquisse de l’Oscilloscope. Avant de copier et coller le programme, nous allons examiner quelques limitations et expliquer le programme.

J’ai dû faire une bonne quantité de recherche à venir avec le code, et de nombreux extraits ont été « empruntés » provenant de plusieurs sources.

J’ai divisé le programme en plusieurs subrutines pour le rendre plus facile à comprendre. Le code est bien documenté, mais, si vous avez du mal comprendre, laissez un commentaire et je vais essayer d’expliquer il.

La bande passante Oscilloscope est limitée à 1 khz environ, mais il n’y a place à amélioration.

L’entrée est limitée à une forme d’onde 5 volts crête à crête, sauf si vous utilisez un diviseur de tension à l’entrée et aussi limitée à des formes d’onde positives de 0 à 5 volts.

J’ai utilisé un code que j’ai trouvé à: http://www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ pour régler la durée d’échantillonnage ADC.

Les fonctions graphiques et touch ont été modifiées et empruntées, les exemples de Henning Karlsen fournis dans ses bibliothèques.

J’ai utilisé un régulateur de tension LM 317 et une minuterie IC 555 un astable ocillator, pour créer des signaux utilisés pour tester l’entrée de l’oscilloscope.

Espoir que vous avez apprécié la lecture et nous espérons construire cette instructable. Si vous le trouvez utile, vous pouvez voter pour moi dans les concours.

Remarque : J’ai inclus l’esquisse, le UTFT et les bibliothèques UTouch dans le fichier libraries.zip pour ceux d'entre vous rencontrez des problèmes.

Copiez et collez le croquis de votre IDE Arduino

---PROGRAMME D’AIDE
/*--------------------------------------------------------------
Programme : OscopetouchLCDmega

Description : Digital Oscilloscope avec données affichées
sur couleur TFT LCD avec écran tactile

Matériel : sainsmart mega2560 carte avec 3.5" tft lcd tactile module d’affichage et kit de blindage
http://www.sainsmart.com/Home-page-View/sainsmart...

Logiciel : Développé à l’aide du logiciel Arduino 1.0.3
Ce programme nécessite la bibliothèque UTFT et la
UTouch bibliothèque de Henning Karlsen.
Web : http://www.henningkarlsen.com/electronics
Version 1.00
Date: 5 avril 2014

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

#include
#include
Déclarer les polices que nous utiliserons
extern uint8_t SmallFont [] ;
Initialiser l’écran et toucher les fonctions
UTFT myGLCD(ITDB32S,38,39,40,41) ;
UTouch myTouch(6,5,4,3,2) ;
Déclarer des variables
char buf [12] ;
int x, y ;
int d’entrée = 0 ;
octet échantillon [320] ;
octet OldSample [320] ;
int StartSample = 0 ;
int EndSample = 0 ;
int Max = 100 ;
int Min = 100 ;
mode d’int = 0 ;
dTime int = 1 ;
tmode int = 0 ;
int Trigger = 0 ;
int SampleSize = 0 ;
int parait = 0 ;
int dgvh ;
int hpos = 50 ; Set de 0v sur grille horizontale
int vsens = 4 ; sensibilité verticale

Définir les divers Prédiviseur ADC
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) ;

---Démarrer Subrutines---
---dessiner sous boutons
void 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) ;
}
sous position écran tactile---
touch() Sub {}
tandis que (myTouch.dataAvailable())
{
myTouch.read() ;
x=myTouch.GetX() ;
y=myTouch.Gety() ;
Delay(500) ;
Si ((y > = 1) & & (y < = 50)) / / ligne de retard
{
Si ((x > = 250) & & (x < = 300)) / / bouton de temporisation
waitForIt (250, 1, 310, 50) ;
mode = mode ++ ;
{
myGLCD.setColor (255, 0, 0) ;
myGLCD.drawRoundRect (250, 1, 310, 50) ;
Sélectionnez le temps de retard
Si (mode == 0) dTime = 0 ;
Si (mode == 1) dTime = 1 ;
Si (mode == 2) dTime = 2 ;
Si (mode == 3) dTime = 5 ;
Si (mode == 4) dTime = 10 ;
Si (mode == 5) dTime = 20 ;
Si (mode == 6) dTime = 30 ;
Si (mode == 7) dTime = 50 ;
Si (mode == 8) dTime = 100 ;
Si (mode == 9) dTime = 200 ;
Si (mode == 10) dTime = 500 ;
Si mode (mode > 10) = 0 ;

}}

Si ((y > = 70) & & (y < = 120)) / / Trigger ligne
{
Si ((x > = 250) & & (x < = 300)) / / bouton de déclenchement
waitForIt (250, 55, 310, 105) ;
TMode = tmode ++ ;
{
myGLCD.setColor (255, 0, 0) ;
Sélectionnez la valeur de déclenchement de logiciel
myGLCD.drawRoundRect (250, 55, 310, 105) ;
Si (tmode == 1) déclencheur = 0 ;
Si (tmode == 2) Trigger = 10 ;
Si (tmode == 3) Trigger = 20 ;
Si (tmode == 4) Trigger = 30 ;
Si (tmode == 5) Trigger = 50 ;
Si tmode (tmode > 5) = 0 ;
}}
Si ((y > = 130) & & (y < = 180)) / / H position rangée
{
Si ((x > = 250) & & (x < = 300)) / / H position bouton
waitForIt (250, 110, 310, 160) ;
hpos = hpos ++ ;

{
myGLCD.setColor (255, 0, 0) ;
myGLCD.drawRoundRect (250, 110, 310, 160) ;
myGLCD.clrScr() ;
Buttons() ;
Si (hpos > 60) hpos = 50 ;
}}}}
---attendre pour toucher sub
void waitForIt (int x1, int y1, int x2, int y2)
{
tandis que (myTouch.dataAvailable())
myTouch.read() ;
}
---dessiner void grille
void DrawGrid() {}

myGLCD.setColor (0, 200, 0) ;
pour (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) ;

}
---Attendez d’entrée est supérieure à sup de déclencheur
trigger() Sub {}

tandis que (entrée < Trigger) {entrée = analogRead (A0) * 5/100 ;
}}

---Fin Subrutines---

void setup() {}
myGLCD.InitLCD() ;
myGLCD.clrScr() ;
myTouch.InitTouch() ;
myTouch.setPrecision(PREC_MEDIUM) ;
Buttons() ;
pinMode (0, entrée) ;
mettre en place l’ADC
ADCSRA & = ~ PS_128 ; enlever les bits définis par la bibliothèque de l’Arduino

vous pouvez choisir un Prédiviseur par en dessous.
PS_16, PS_32, PS_64 ou PS_128
ADCSRA | = PS_64 ; définir nos propres Prédiviseur
}
void loop() {}

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

Recueillir les données analogiques dans un tableau

StartSample = micros() ;
pour (xpos int = 0 ;
XPos < 240 ; XPos ++) {échantillon [PosX] = analogRead (A0) * 5/102 ;
delayMicroseconds(dTime) ;
}
EndSample = micros() ;

Visualisez les données analogiques recueillies de tableau
pour (xpos int = 0; xpos < 239 ;
XPos ++)
{
Effacer l’écran précédent
myGLCD.setColor (0, 0, 0) ;
myGLCD.drawLine (xpos + 1, 255-OldSample [xpos + 1] * vsens-hpos, xpos + 2, 255-OldSample [xpos + 2] * vsens-hpos) ;
Si (xpos == 0) myGLCD.drawLine (xpos + 1, 1, xpos + 1, 239) ;
Dessiner les nouvelles données
myGLCD.setColor (255, 255, 255) ;
myGLCD.drawLine (xpos, 255-Sample [PosX] * vsens-hpos, xpos + 1, 255-Sample [xpos + 1] * vsens-hpos) ;
}
Déterminer la tension crête à crête de sample
Max = échantillon [100] ;
Min = échantillon [100] ;
pour (xpos int = 0 ;
XPos < 240 ; XPos ++)
{
OldSample [PosX] = échantillon [PosX] ;
Si (échantillon [PosX] > Max) Max = échantillon [PosX] ;
Si (échantillon [PosX] < Min) Min = échantillon [PosX] ;
}
afficher le temps de l’échantillon, le temps de retard et de déclencher le niveau
myGLCD.setBackColor (0, 0, 255) ;
myGLCD.setFont (SmallFont) ;
myGLCD.setBackColor (0, 0, 255) ;
myGLCD.print ("Delay", 260, 5) ;
myGLCD.print ("", 270, 20) ;
myGLCD.print (itoa (dTime, buf, 10), 270, 20) ;
myGLCD.print ("hexahedron", 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) ;
Parait = (EndSample-StartSample) / 1000 ;
myGLCD.print ("s", 205, 210) ;
myGLCD.print ("", 280, 30) ;
myGLCD.print (itoa (parait, buf, 10), 205, 220) ;
Gamme de 0 à 64 * 78 = 4992 mV
SampleSize = (Max-Min) * 78 ;
myGLCD.print ("mvolts", 5, 210) ;
myGLCD.print (itoa (SampleSize, buf, 10), 5, 220) ;
myGLCD.print (itoa (analogRead (A0) * 4.15 / 10,23, buf, 10), 110, 220) ;

}}

---FIN PROGRAMME

Articles Liés

Vidéo : Faire votre gant de travail avec un écran tactile

Vidéo : Faire votre gant de travail avec un écran tactile

cette vidéo va vous par le processus rapide et facile de personnaliser n'importe quel gant pour travailler avec un écran tactile comme l'iPad, iPhone, Palm Pre, etc..Il s'agit de la version vidéo de mon Instructable précédente qui a été récemment pré
Comment faire un bon marché 16 MHz Arduino Oscilloscope à l’aide d’Excel et l’écran de votre ordinateur à écran

Comment faire un bon marché 16 MHz Arduino Oscilloscope à l’aide d’Excel et l’écran de votre ordinateur à écran

Souvent un amateur d'électronique va concevoir et construire quelque chose pour constater qu'il ne comporte de la façon dont il ou elle a l'intention. Parfois dans ces situations, le problème est lié à un signal électrique, mais que les choses se dép
Faire un meuble à l’aide de queues d’aronde

Faire un meuble à l’aide de queues d’aronde

Ben Plewes nous parle à travers les joints de queue d'aronde il a fait pour ses étagères de salle à manger. L'article est paru sur http://www.getwoodworking.comCes étagères sont un ensemble de trois pour notre salle à manger. Ma meilleure moitié rech
Faire un collier à l’aide de fusibles électriques

Faire un collier à l’aide de fusibles électriques

Bonjour les gars!!Savez-vous que la conclusion plus tôt des bijoux a été datée il y a environ 25 000 ans. Ce collier simple fait d'arêtes de poisson a été trouvé dans une grotte à Monaco. Bien sûr, les bijoux qu'ils portaient à l'époque n'a pas été c
Faire du café à l’aide de la presse Français

Faire du café à l’aide de la presse Français

Ah, les Français Appuyez sur. Plus correctement appelé Cafétiére, (Merci twocvbloke pour l'info!) Pour certains, c'est rien de plus qu'une énigme que seulement les plus grands connaisseurs de café peuvent utiliser, mais ce n'est pas ! La presse Franç
Comment faire un dé électronique aide ARDUINO

Comment faire un dé électronique aide ARDUINO

Hé les gars nous sommes revient avec cool un autre projet Arduino pour vous. Dans ce Instructable, je vais vous montrer comment faire un dé électronique aide Arduino. Je sais que vous l'aimerez. Ne regardez pas la vidéo.Étape 1: composants1. LED (7)2
Comment faire pour exercer à l’aide d’un banc de parc ! Brûle le banc !

Comment faire pour exercer à l’aide d’un banc de parc ! Brûle le banc !

Emran à REACTMethod.com présente le banc Burn Out !Dans cette série de vidéos continue Emran va vous apprendre comment utiliser votre environnement pour sortir un grand travail ! D'adaptation et de créativité est la clé !Brûler les graisses, tonalité
Comment faire pour utiliser Gmail ou Google Apps for Business avec Microsoft Exchange E-mail

Comment faire pour utiliser Gmail ou Google Apps for Business avec Microsoft Exchange E-mail

beaucoup d'organisations utilise Microsoft Exchange pour leur courriel.  J'ai trouver l'échange comme un système très pauvre et n'aime pas les méthodes de lecture de courrier électronique sur un serveur Exchange : Outlook ou Outlook Web App.  Je préf
Comment faire une bande de caoutchouc k ' NEX Gatling Gun avec Modes sélectionnables en voiture

Comment faire une bande de caoutchouc k ' NEX Gatling Gun avec Modes sélectionnables en voiture

Dans ce tutoriel, vous apprendrez comment faire une bande de caoutchouc mitrailleuse Gatling (aka "minigun") de k ' NEX.Les caractéristiques de pistolet 8 tonneaux que chacun peut tenir environ 4 bandes de caoutchouc pour un total d'environ 32 c
À l’aide de sacs à dos PCF8574 avec afficheurs LCD et Arduino

À l’aide de sacs à dos PCF8574 avec afficheurs LCD et Arduino

IntroductionÀ l'aide de modules LCD avec votre Arduino est populaire, cependant la quantité de câblage nécessite du temps et patience au fil il correctement - et aussi utilise un grand nombre de broches de sortie numérique. C'est pourquoi nous aimons
Faire un amplificateur passif pour votre téléphone avec un X-Carve CNC

Faire un amplificateur passif pour votre téléphone avec un X-Carve CNC

Pour plus d'informations et photos, allez à http://www.onewood.com.au/x-carve-cnc-project-make-a-passive-amplifier-for-your-iphone/Faire un amplificateur passif pour votre téléphone avec un X-Carve CNCProjet CNC apportant un amplificateur passif pour
Jeu d’écran tactile virtuel à l’aide de Zybo

Jeu d’écran tactile virtuel à l’aide de Zybo

Virtuel tactile jeu tutoriel pour le Zybo fournira des instructions pas à pas pour la personnalisation de votre matériel pour émuler l'écran tactile sur simple moniteur TFT avec détection de caméra et de doigt.Matériel requis :-Zybo Conseil d'adminis
Faire un couvercle décoratif de bougie/pot/bol avec de l’argile polymère

Faire un couvercle décoratif de bougie/pot/bol avec de l’argile polymère

vous avez un bol cool, le pot ou la bougie avec aucun couvercle ? Oui.. en fait, j'ai beaucoup.  Ils ne serait-il mieux avec couvercles ?  Droit !  Nous allons donc corriger cela !Pour cela instructable, j'ai fait un couvercle décoratif de l'argile d
Faire une table de nuit ou un support simple avec palettes

Faire une table de nuit ou un support simple avec palettes

Faire une table de nuit ou un support simple avec peu de frais à l'aide de palettes mis au rebut.J'aime des palettes car vous pouvez les obtenir gratuitement et quand ils sont poncés vers le bas, elle révèle un joli design bois. Peu fissures ou trous