macsbug

Just another WordPress.com site

8ch Analog Monitor for Arduino MEGA 2560 + TFT 3.5 int

leave a comment »

8ch アナログ・モニターの製作。
ORG : 2015.01.11
Rev 1 : 2015.02.06 : チャンネル数の設定追加。起動時にピンをグランドする。 そのピンがチャンネル数になる。

最大8ch のアナログ電圧をモニターできる。0.4msec

機能: Input:Analog 8 ch ( AN0 〜 AN7)。 Display:3.5 int 480 x 320 pixel
_   分解能:1ch = 140Hz。 8ch = 17Hz。
_   Channel設定:起動時に測定ピンのいずれかをGNDする事により、1〜8 ch の表示が可能。openの場合は、8 ch。
準備:

1. Arduino MEGA :8-bit  ATMEGA 2560 16MHz

2. TFT:UTFT Libraly:henningkarlsen.com/electronics

3. TFT LCD Display:3.5int 480×320 Controler=R61581:airendo
_  注:この aitendo の 製品は、Color(R,G,B) の値がずれている。
_    正しい製品を使用する場合は、Color(R,G,B)のR,G,B値を調整してください。

IMG_3770a

ca2ca0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


// Arduino MEGA 2560 8ch Analog Monitor                // 2015.01.10 s.ono
//                                                     // rev 2015.02.06
// disaply : 480x320                                   //
#include <UTFT.h>                                      // UTFT   Libraly
#include <UTouch.h>                                    // UTouch Libraly
extern uint8_t SmallFont[];                            // Small Font
extern uint8_t BigFont[];                              // Big   Font
extern uint8_t SevenSegNumFont[];                      // SevenSegNumFont
UTFT   myGLCD(CTE35IPS,38,39,40,41);                   // TFT setup,Cont=R61581
UTouch myTouch(6,5,4,3,2);                             // Touch setup
int ax;                                                // Analog input
int x1[9];                                             // x store data
int y1[9];                                             // y store data
int x2 = 40;                                           // x2 position
int y2;                                                // y2 position
int r = 24;                                            // y position adjust
String title;
int ch;
//-----------------------------------------------------//------------------------------
void setup(){                                          //
 //Serial.begin(115200);
 for (int i = 0; i < 9; i++){ pinMode(i,INPUT);}       // Analog input setup
 //----------------------------------------------------// LCD Setup
 myGLCD.InitLCD();                                     // LCD Initialize
 myGLCD.setFont(SmallFont);                            // Font : smallfont
 myGLCD.clrScr();                                      // screen clear
 myTouch.InitTouch();                                  // Touch Initialize
 myTouch.setPrecision(PREC_EXTREME);                   // Touch Sence MAX
 //----------------------------------------------------// Pnest setup
 myGLCD.setColor(255,100,100);                         // panel background color
 myGLCD.fillRect(0, 0, 480, 320);                      // panel all fill
 myGLCD.setColor(255,0,0);                             // waku color
 myGLCD.drawRect(39, 22, 461, 311);                    // waku
 myGLCD.setColor(0, 0, 0);                             // moji color=white
 myGLCD.setBackColor(200,200,200);                     // moji background color
 channel_setup();                                      // channel setup                                
 myGLCD.setFont(SmallFont);                            //
 myGLCD.setColor(0, 0, 0);                             //
 title = "ch ANALOG MONITOR ";                         // TITLE
 title = " " + String(ch) + title;                     // TITLE
 myGLCD.print(title, LEFT, 1);                         // TITLE
 myGLCD.setBackColor(255,100,100);                     // background color=blue
 myGLCD.setColor(255,255,255);                         // moji color=black
 for ( int i = 0; i < ch; i++){                        //
   myGLCD.print("A"+String(i,DEC),9,36+i*35);          // A0 print
 }                                                     //
 x2 = 40 ;                                             // x position
 for(int j=1; j<ch+1; j++){x1[j]=x2; y1[j]=35*j+r;}    // 8 ch zero setup ( y )
}                                                      //

//-----------------------------------------------------//------------------------------
void loop(){                                           //
  if ( x2 > 460 ){ x2 = 40 ;                           // X Max, x start pos
   for(int j=1; j<ch+1; j++){x1[j]=x2; y1[j]=35*j+r;}  // 8 ch pos reset,x1,y1
  }                                                    //
  //---------------------------------------------------// Analog IN
  for ( int i = 1; i < ch+1; i++ ){                    // 1 to 8 ch
    ax = analogRead( i - 1 ) / 60;                     // Analog Read 1 to 8 / 60
    y2 = -1*(ax) + 35*i + r;                           // y2 convert
  //---------------------------------------------------// X Axis TITLE
    myGLCD.setColor(0, 0, 0);                          // WHITE
    myGLCD.setBackColor(255,255,255);                  // moji back color=black
    myGLCD.print(" "+String(ax)+" ",4,35*i + 18);      // Analog Data ch disp
  //---------------------------------------------------// CLEAR LINE   
    myGLCD.setColor(255,255,255);                      // clear BLACK
    myGLCD.drawLine(x1[i]+1,23,x1[i]+1,310);           // clear line
  //---------------------------------------------------// DRAW LINE   
    myGLCD.setColor(0,0,0);                            // Color WHITE
    myGLCD.fillRect(x1[i], y1[i], x2, y2);             // Draw(x1,y1,x2,y2),drawLine
p:                                                     //
    x1[i] = x2;                                        // x2 Store
    y1[i] = y2;                                        // y2 Store
  //---------------------------------------------------//
  }                                                    //
    x2++;                                              // Next x
}                                                      //
//-----------------------------------------------------//------------------------------
void channel_setup(){                                  // channel setup
 myGLCD.print(" SET THE NUMBER OF CHANNELS. ",100,60);
 myGLCD.print(" PLEASE TO GROUND THE PIN. ",100,80);
 myGLCD.print(" THE PIN IS THE NUMBER OF CHANNELS. ",100,100);
 delay(5000);                                          //
 myGLCD.setFont(BigFont);                              //
 for ( ch = 1; ch < 9; ch++){                          // channel setup
  int ax = analogRead(ch-1);                           //
  if ( ax == 0 ){                                      // ground check
    myGLCD.setColor(0, 255, 128);                      //
    myGLCD.print(" "+String(ch)+" CH SELECT ",170,140);//
    delay(500); return;}                               //
   else{                                               //
    myGLCD.print(" "+String(ch)+" CH CHECK ",170,140); //
  }                                                    //
  if (ch==8){ myGLCD.setColor(0, 255, 128);            //
    myGLCD.print(" "+String(ch)+" CH SELECT ",170,140);//
  }                                                    //
  delay(500);                                          //
 }                                                     //
 ch = ch - 1;                                          // 
}                                                      // 
//-----------------------------------------------------//------------------------------

メモ:今回、タッチパネルを使用した、入力設定は行いませんでした。理由は、現在、ディスプレーが入手できない為です。

Written by macsbug

1月 11, 2015 @ 8:36 am

カテゴリー: Arduino

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。