Bengkel Arduino (Medium Level)

Exercise 1a(Hello World)

#include <LiquidCrystal.h>              // includes the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  //(rs, enable, d4, d5, d6, d7)
void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(2,0);           // Sets the location column 2, row 0
  lcd.print("hello world!");
  delay(1000);
}
void loop()
{   
 lcd.setCursor(7, 1);   // set the cursor to column 7, line 1
 lcd.print(millis()/1000);  // print the number of seconds since reset
 delay(100);
}


Exercise 1b(Cursor Test)

#include <LiquidCrystal.h>        // includes the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // (rs, enable, d4, d5, d6, d7)
void setup()
{
lcd.begin(16,2);         // Initializes the LCD screen,
lcd.clear();             // Clears the display
delay(1000);
}
void loop()
 {
 lcd.print("Arduino");     // Prints "Arduino" on the LCD
 delay(3000);             // 3 seconds delay 
 lcd.setCursor(2,1);     // Sets the location to the LCD
 lcd.print("LCD Tutorial");
 delay(3000);
 lcd.clear();   // Clears the display
 lcd.blink();   //Displays the blinking LCD cursor
 delay(4000);
 lcd.setCursor(7,1);
 delay(3000);
 lcd.noBlink();   // Turns off the blinking LCD cursor
 lcd.cursor();   // Displays an underscore (line)
 delay(4000);
 lcd.noCursor();   // Hides the LCD cursor
 lcd.clear();   // Clears the LCD screen
}


Exercise 1c(Cursor Test)


#include <LiquidCrystal.h>        // includes the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // (rs, enable, d4, d5, d6, d7)
int i=0;
void setup()
{
  lcd.begin(16, 2);   // set up the LCD's number of columns and rows:
  Serial.begin(9600);   // initialize the serial communications:
}
void loop()
{
 if (Serial.available())   // when characters arrive over the serial port...
 {
  delay(100);
  lcd.clear();
  while (Serial.available() > 0)    // read all the available characters
    {
     lcd.write(Serial.read());   // display each character to the LCD
    }
    i+=1; //number of how many time text is entered
  }
 {
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);   // set the cursor to column 0, line 1
  lcd.print("i=");
  lcd.print(i);   // print the number of seconds since reset:
 }
}


Exercise 2a(Pixel Test)


#define sclk 13  // Don't change
#define mosi 11  // Don't change
#define cs_lcd   10
#define dc       9   //dc juga dikenali sbg AO
#define rst      8
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
Adafruit_ST7735 tft = Adafruit_ST7735(cs_lcd, dc, rst);
void setup()
{
 tft.setRotation(0);  // set to 1(90 degree),2(180 degree),3(270 degree)
 tft.initR(INITR_BLACKTAB); //default INITR_REDTAB,INITR_GREENTAB
 tft.fillScreen(ST7735_WHITE); 
 tft.setTextWrap(true);  //jika true, text akan align kebawah jika melebihi pixel
}
void loop()
{
 for ( int y = 0; y < 160; y++ )  //panjang Y adalah 160 pixels
 {
   for ( int x = 0; x < 128; x++ )   //panjang X adalah 128 pixels
    {  
   tft.drawPixel(x,y,ST7735_BLUE);
   delay(10);  
    }  
  }

}


Exercise 2b(Counter Test)


#define sclk 13  // Don't change
#define mosi 11  // Don't change
#define cs_lcd   10
#define dc       9
#define rst      8
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
Adafruit_ST7735 tft = Adafruit_ST7735(cs_lcd, dc, rst);
File myFile;
void setup()
{
 tft.initR(INITR_BLACKTAB);
 tft.fillScreen(ST7735_BLACK);
 tft.setTextWrap(true); //tft.setTextWrap(false);
 tft.setTextSize(2); //text size 
 tft.setCursor(4,0); //text position setCursor(x,y);
 tft.setTextColor(ST7735_WHITE); //text colour 
 tft.print(“Counter Test");  // print(text);
 delay(2000);
}
void loop()
{
 tft.setTextSize(5);
 tft.setTextColor(ST7735_RED, ST7735_BLACK);
 for ( int i = 0; i < 100; i++ )
 {
   tft.setCursor(40, 50);
   tft.print( i );
   delay( 1000 );
 }
}



Exercise 2c(Graphic Test)


#define sclk 13  // Don't change
#define mosi 11  // Don't change
#define cs_lcd   10
#define dc       9   //dc juga dikenali sbg AO
#define rst      8

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>

Adafruit_ST7735 tft = Adafruit_ST7735(cs_lcd, dc, rst);
float p = 3.1415926;

void setup(void) 
{
  Serial.begin(9600);
  Serial.print("Hello! ST7735 TFT Test");

  // Use this initializer if you're using a 1.8" TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab

  // Use this initializer (uncomment) if you're using a 1.44" TFT
  //tft.initR(INITR_144GREENTAB);   // initialize a ST7735S chip, black tab

  Serial.println("Initialized");

  uint16_t time = millis();
  tft.fillScreen(ST7735_BLACK);
  time = millis() - time;

  Serial.println(time, DEC);
  delay(500);

  // large block of text
  tft.fillScreen(ST7735_BLACK);
  testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur adipiscing ante sed nibh tincidunt feugiat. Maecenas enim massa, fringilla sed malesuada et, malesuada sit amet turpis. Sed porttitor neque ut ante pretium vitae malesuada nunc bibendum. Nullam aliquet ultrices massa eu hendrerit. Ut sed nisi lorem. In vestibulum purus a tortor imperdiet posuere. ", ST7735_WHITE);
  delay(1000);

  // tft print function!
  tftPrintTest();
  delay(4000);

  // a single pixel
  tft.drawPixel(tft.width()/2, tft.height()/2, ST7735_GREEN);
  delay(500);

  // line draw test
  testlines(ST7735_YELLOW);
  delay(500);

  // optimized lines
  testfastlines(ST7735_RED, ST7735_BLUE);
  delay(500);

  testdrawrects(ST7735_GREEN);
  delay(500);

  testfillrects(ST7735_YELLOW, ST7735_MAGENTA);
  delay(500);

  tft.fillScreen(ST7735_BLACK);
  testfillcircles(10, ST7735_BLUE);
  testdrawcircles(10, ST7735_WHITE);
  delay(500);

  testroundrects();
  delay(500);

  testtriangles();
  delay(500);

  mediabuttons();
  delay(500);

  Serial.println("done");
  delay(1000);
}

void loop() {
  tft.invertDisplay(true);
  delay(500);
  tft.invertDisplay(false);
  delay(500);
}

void testlines(uint16_t color) {
  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(0, 0, x, tft.height()-1, color);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(0, 0, tft.width()-1, y, color);
  }

  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(tft.width()-1, 0, 0, y, color);
  }

  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(0, tft.height()-1, x, 0, color);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
  }

  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
  }
  for (int16_t y=0; y < tft.height(); y+=6) {
    tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
  }
}

void testdrawtext(char *text, uint16_t color) {
  tft.setCursor(0, 0);
  tft.setTextColor(color);
  tft.setTextWrap(true);
  tft.print(text);
}

void testfastlines(uint16_t color1, uint16_t color2) {
  tft.fillScreen(ST7735_BLACK);
  for (int16_t y=0; y < tft.height(); y+=5) {
    tft.drawFastHLine(0, y, tft.width(), color1);
  }
  for (int16_t x=0; x < tft.width(); x+=5) {
    tft.drawFastVLine(x, 0, tft.height(), color2);
  }
}

void testdrawrects(uint16_t color) {
  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=0; x < tft.width(); x+=6) {
    tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
  }
}

void testfillrects(uint16_t color1, uint16_t color2) {
  tft.fillScreen(ST7735_BLACK);
  for (int16_t x=tft.width()-1; x > 6; x-=6) {
    tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
    tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
  }
}

void testfillcircles(uint8_t radius, uint16_t color) {
  for (int16_t x=radius; x < tft.width(); x+=radius*2) {
    for (int16_t y=radius; y < tft.height(); y+=radius*2) {
      tft.fillCircle(x, y, radius, color);
    }
  }
}

void testdrawcircles(uint8_t radius, uint16_t color) {
  for (int16_t x=0; x < tft.width()+radius; x+=radius*2) {
    for (int16_t y=0; y < tft.height()+radius; y+=radius*2) {
      tft.drawCircle(x, y, radius, color);
    }
  }
}

void testtriangles() {
  tft.fillScreen(ST7735_BLACK);
  int color = 0xF800;
  int t;
  int w = tft.width()/2;
  int x = tft.height()-1;
  int y = 0;
  int z = tft.width();
  for(t = 0 ; t <= 15; t+=1) {
    tft.drawTriangle(w, y, y, x, z, x, color);
    x-=4;
    y+=4;
    z-=4;
    color+=100;
  }
}

void testroundrects() {
  tft.fillScreen(ST7735_BLACK);
  int color = 100;
  int i;
  int t;
  for(t = 0 ; t <= 4; t+=1) {
    int x = 0;
    int y = 0;
    int w = tft.width()-2;
    int h = tft.height()-2;
    for(i = 0 ; i <= 16; i+=1) {
      tft.drawRoundRect(x, y, w, h, 5, color);
      x+=2;
      y+=3;
      w-=4;
      h-=6;
      color+=1100;
    }
    color+=100;
  }
}

void tftPrintTest() {
  tft.setTextWrap(false);
  tft.fillScreen(ST7735_BLACK);
  tft.setCursor(0, 30);
  tft.setTextColor(ST7735_RED);
  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextColor(ST7735_YELLOW);
  tft.setTextSize(2);
  tft.println("Hello World!");
  tft.setTextColor(ST7735_GREEN);
  tft.setTextSize(3);
  tft.println("Hello World!");
  tft.setTextColor(ST7735_BLUE);
  tft.setTextSize(4);
  tft.print(1234.567);
  delay(1500);
  tft.setCursor(0, 0);
  tft.fillScreen(ST7735_BLACK);
  tft.setTextColor(ST7735_WHITE);
  tft.setTextSize(0);
  tft.println("Hello World!");
  tft.setTextSize(1);
  tft.setTextColor(ST7735_GREEN);
  tft.print(p, 6);
  tft.println(" Want pi?");
  tft.println(" ");
  tft.print(8675309, HEX); // print 8,675,309 out in HEX!
  tft.println(" Print HEX!");
  tft.println(" ");
  tft.setTextColor(ST7735_WHITE);
  tft.println("Sketch has been");
  tft.println("running for: ");
  tft.setTextColor(ST7735_MAGENTA);
  tft.print(millis() / 1000);
  tft.setTextColor(ST7735_WHITE);
  tft.print(" seconds.");
}

void mediabuttons() {
  // play
  tft.fillScreen(ST7735_BLACK);
  tft.fillRoundRect(25, 10, 78, 60, 8, ST7735_WHITE);
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_RED);
  delay(500);
  // pause
  tft.fillRoundRect(25, 90, 78, 60, 8, ST7735_WHITE);
  tft.fillRoundRect(39, 98, 20, 45, 5, ST7735_GREEN);
  tft.fillRoundRect(69, 98, 20, 45, 5, ST7735_GREEN);
  delay(500);
  // play color
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_BLUE);
  delay(50);
  // pause color
  tft.fillRoundRect(39, 98, 20, 45, 5, ST7735_RED);
  tft.fillRoundRect(69, 98, 20, 45, 5, ST7735_RED);
  // play color
  tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_GREEN);
}


Exercise 3(Voltage Sensor)



int analogInput = A0;
float vout = 0.0;
float vin = 0.0;
float R1 = 10000.0; // 30000 if using voltage module
float R2 = 2200.0; // 7500 if using voltage module
int value = 0;
void setup()
{
 pinMode(analogInput, INPUT);
 Serial.begin(9600);
 Serial.print("DC VOLTMETER");
}
void loop()
{ 
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0; 
vin = vout / (R2/(R1+R2)); 
Serial.print(“value= ");
Serial.print(value);
Serial.print(“ INPUT V= ");
Serial.println(vin,2);
delay(500);
}



Exercise 4(Current Sensor)
const int analogIn = A1;

int mVperAmp = 185;      // use 100 for 20A Module and 66 for 30A Module
int RawValue= 0;
int ACSoffset = 2500;   // at 0A, offset value=2500
double Voltage = 0;
double Amps = 0;
void setup() {
 Serial.begin(9600); }
void loop()
{
RawValue = analogRead(analogIn);
Voltage = (RawValue – 308 / 1024.0) * 5000;      // Gets you mV
Amps = ((Voltage - ACSoffset) / mVperAmp);
Serial.print("Raw Value = " );      // shows pre-scaled value
Serial.print(RawValue);
Serial.print("\t mV = ");    // shows the voltage measured
Serial.print(Voltage,3);    // display 3 digits after decimal point
Serial.print("\t Amps = ");    // shows the voltage measured Serial.println(Amps,3);
delay(1000);
}


1 comment:

  1. This code is really useful khoa cua dien tu samsung, thank you for giving us more knowledge! Introduce your side to the fingerprint door lock! thank you very much

    ReplyDelete