Лучший эмулятор Arduino UnoArduSim V2.6. Вторая серия.


Скетч из концовки первой серии.


Изменение скорости вращения DC Motor(a) при помощи потенциометра.




//Начало скетча


void setup() {
  pinMode(5, OUTPUT); pinMode(7, OUTPUT); pinMode(6, INPUT);
}

void loop() {
  //контакт A0 считывает сигнал с потенциометра
  int sensorReading = analogRead(A0);
  int t = map(sensorReading, 0, 1023, 0, 255);
  //карта: значения 0, 1023 это от 0 до 5 вольт с потенциометра
  //карта: значения 1, 20 это задержка для delay от 1 до миллисекунд
  analogWrite(5, t);
  digitalWrite(7, LOW);
  delay(5000);
  digitalWrite(7, HIGH);
  delay(5000);
}


//Конец скетча


Пример 1. Вывод текста на I2C LCD дисплей.



//Начало скетча 1



#include "Wire.h"
#include "Adafruit_LiquidCrystal.h"
Adafruit_LiquidCrystal lcd(0);

void setup() {
  lcd.begin(16, 2);
  lcd.setBacklight(HIGH);
  //pinMode(5, OUTPUT); pinMode(7, OUTPUT); pinMode(6, INPUT);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Kolotushkin.com");
  /*
    int sensorReading = analogRead(A0);
    int t = map(sensorReading, 0, 1023, 0, 255);
    analogWrite(5, t);
    digitalWrite(7, LOW);
    delay(5000);
    digitalWrite(7, HIGH);
    delay(5000); */
}


//Конец скетча 1


Пример 2. Вывод текста и значений на I2C LCD дисплей.



//Начало скетча 2


#include "Wire.h"
#include "Adafruit_LiquidCrystal.h"
Adafruit_LiquidCrystal lcd(0); //I2C (A4, A5)

float gradus = 0;
int encoder = 0;
int flag = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.setBacklight(HIGH);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT); digitalWrite(7, LOW);
  pinMode(6, INPUT);
}

void loop() {
  encoder = digitalRead(6);
  if ((encoder == HIGH) && (flag == 0)) {
    gradus = gradus + 22.5;
    flag = 1;
  }
  if ((encoder == LOW) && (flag == 1)) {
    gradus = gradus + 22.5;
    flag = 0;
  }
  lcd.setCursor(0, 0);
  lcd.print("Gradusov ");
  lcd.print(gradus, 0);
  int sensorReading = analogRead(A0);
  int t = map(sensorReading, 0, 1023, 1, 255);
  analogWrite(5, t);
}


//Конец скетча 2


Пример 3. Вывод текста и значений на SPI LCD дисплей.



//Начало скетча 3


#include "Wire.h"
#include "Adafruit_LiquidCrystal.h"
Adafruit_LiquidCrystal lcd(3, 2, 4); //SPI (SPIDATA, SCK, SS)

float gradus = 0;
int encoder = 0;
int flag = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.setBacklight(HIGH);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT); digitalWrite(7, LOW);
  pinMode(6, INPUT);
}

void loop() {
  encoder = digitalRead(6);
  if ((encoder == HIGH) && (flag == 0)) {
    gradus = gradus + 22.5;
    flag = 1;
  }
  if ((encoder == LOW) && (flag == 1)) {
    gradus = gradus + 22.5;
    flag = 0;
  }
  lcd.setCursor(0, 0);
  lcd.print("Gradusov ");
  lcd.print(gradus, 0);
  int sensorReading = analogRead(A0);
  int t = map(sensorReading, 0, 1023, 1, 255);
  analogWrite(5, t);
}


//Конец скетча 3


Пример 4. Вывод текста и значений на LCD дисплей, который имеет 4-битовый параллельный интерфейс.



//Начало скетча 4


#include "Wire.h"
#include "Adafruit_LiquidCrystal.h"
Adafruit_LiquidCrystal lcd(3, 2, 16, 17, 18, 19);
// paralel port (RS, E, DB4-DB7[1], DB4-DB7[2], DB4-DB7[3], DB4-DB7[4])
//контакт RW подключается к A0 и к нему же подключается потенциометр
float gradus = 0;
int encoder = 0;
int flag = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.setBacklight(HIGH);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT); digitalWrite(7, LOW);
  pinMode(4, INPUT);
}

void loop() {
  encoder = digitalRead(4);
  if ((encoder == HIGH) && (flag == 0)) {
    gradus = gradus + 22.5;
    flag = 1;
  }
  if ((encoder == LOW) && (flag == 1)) {
    gradus = gradus + 22.5;
    flag = 0;
  }
  lcd.setCursor(0, 0);
  lcd.print("Gradusov ");
  lcd.print(gradus, 0);
  int sensorReading = analogRead(A0);
  int t = map(sensorReading, 0, 1023, 1, 255);
  analogWrite(5, t);
}


//Конец скетча 4


Пример 5. Пример 5. Вывод текста на SPI TFT дисплей.



//Начало скетча 5


#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(7, 8, 1);//CS, DC, RESET

void setup()
{
  TFTscreen.begin();
  TFTscreen.stroke(255, 0, 0);
  TFTscreen.setTextSize(3);
}

void loop() {
  TFTscreen.text("TFT", 0, 0);
}


//Конец скетча 5


Пример 6. Вывод текста разного размера и цвета, на SPI TFT дисплей.



//Начало скетча 6


#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(7, 8, 1); //CS, DC, RESET

void setup() {
  TFTscreen.begin();
  TFTscreen.background ( 200, 200, 200 );
}

void loop() {
  TFTscreen.stroke(211, 255, 35);
  TFTscreen.setTextSize(1); // Устанавливаем размер шрифта
  TFTscreen.text("1", 10, 10);
  TFTscreen.stroke(15, 255, 183);
  TFTscreen.setTextSize(2); // Устанавливаем размер шрифта
  TFTscreen.text("2", 10, 30);
  TFTscreen.stroke(0, 204, 255);
  TFTscreen.setTextSize(3); // Устанавливаем размер шрифта
  TFTscreen.text("3", 10, 55);
  TFTscreen.stroke(204, 0, 255);
  TFTscreen.setTextSize(4); // Устанавливаем размер шрифта
  TFTscreen.text("4", 10, 90);
  TFTscreen.stroke(255, 98, 0);
  TFTscreen.setTextSize(5); // Устанавливаем размер шрифта
  TFTscreen.text("5", 50, 15);
  TFTscreen.stroke(255, 238, 0);
  TFTscreen.setTextSize(6); // Устанавливаем размер шрифта
  TFTscreen.text("6", 50, 70);
  TFTscreen.stroke(162, 255, 0);
  TFTscreen.setTextSize(7); // Устанавливаем размер шрифта
  TFTscreen.text("7", 110, 10);
  TFTscreen.stroke(255, 255, 255);
  TFTscreen.setTextSize(8); // Устанавливаем размер шрифта
  TFTscreen.text("8", 110, 70);
  delay(500);
}


//Конец скетча 6


Пример 7. Вывод графических элементов на SPI TFT дисплей.



//Начало скетча 7


#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(7, 8, 1); //CS, DC, RESET

void setup() {
  TFTscreen.begin();
  TFTscreen.background ( 200, 200, 200 );
}

void TriugolnikLevo( int lxa, int ya1, int ya2, int xa3, int ya3) {
  TFTscreen.line( lxa, ya1, lxa, ya2);
  TFTscreen.line( xa3, ya3, lxa, ya1);
  TFTscreen.line( xa3, ya3, lxa, ya2);
}

void TriugolnikPravo( int lx, int y1, int y2, int x3, int y3) {
  TFTscreen.line( lx, y1, x3, y3);
  TFTscreen.line( lx, y2, x3, y3);
  TFTscreen.line( lx, y1, lx, y2);
}

void TriugolnikVerh( int x, int y, int pix) {
  TFTscreen.line( x - pix / 2, y + pix / 2, x, y);
  TFTscreen.line( x, y, x + pix / 2, y + pix / 2);
  TFTscreen.line( x - pix / 2, y + pix / 2, x + pix / 2, y + pix / 2);
}

void TriugolnikNiz( int x, int y, int pix) {
  TFTscreen.line( x - pix / 2, y - pix / 2, x + pix / 2, y - pix / 2);
  TFTscreen.line( x - pix / 2, y - pix / 2, x, y);
  TFTscreen.line( x, y, x + pix / 2, y - pix / 2);
}

void Triugolnik1( int x, int y, int pix) {
  TFTscreen.line( x, y, x, y + pix);
  TFTscreen.line( x, y, x + pix, y + pix);
  TFTscreen.line( x, y + pix, x + pix, y + pix);
}

void Triugolnik2( int x, int y, int pix) {
  TFTscreen.line( x, y, x + pix, y);
  TFTscreen.line( x, y, x + pix, y + pix);
  TFTscreen.line( x + pix, y, x + pix, y + pix);
}

void Triugolnik3( int x, int y, int pix) {
  TFTscreen.line( x, y, x + pix, y);
  TFTscreen.line( x, y, x, y + pix);
  TFTscreen.line( x, y + pix, x + pix, y);
}

void Triugolnik4( int x, int y, int pix) {
  TFTscreen.line( x, y, x + pix, y - pix);
  TFTscreen.line( x, y, x + pix, y);
  TFTscreen.line( x + pix, y - pix, x + pix, y);
}

void loop() {
  TFTscreen.stroke(220, 0, 0);
  TFTscreen.line (0, 10, 10, 0);
  TFTscreen.line (10, 10, 150, 10);
  TFTscreen.line (0, 20, 160, 20);
  TFTscreen. point (3, 3);
  TFTscreen.noFill();
  TFTscreen.rect(10, 30, 50, 20);
  TFTscreen.fill(0, 0, 255);
  TFTscreen.stroke(255, 255, 255);
  TFTscreen.rect(70, 30, 30, 20);
  TFTscreen.noStroke();
  TFTscreen.fill(0, 220, 0);
  TFTscreen.rect(110, 30, 40, 20, 5);
  TFTscreen.circle (20, 70, 10);
  TFTscreen.stroke(255, 255, 255);
  TFTscreen.circle (50, 70, 10);
  TFTscreen.noFill();
  TFTscreen.circle (80, 70, 10); //рисуем круг
  TriugolnikLevo(120, 60, 80, 100, 70);
  TriugolnikPravo(130, 60, 80, 150, 70);
  TriugolnikVerh(120, 110, 20);
  TriugolnikNiz(140, 110, 20);
  Triugolnik1(10, 90, 30);
  Triugolnik2(20, 90, 30);
  Triugolnik3(60, 90, 30);
  Triugolnik4(70, 120, 30);
  delay(500);
}


//Конец скетча 7


Пример 8. Анимация фигур на SPI TFT дисплее, и вывод значений с переменных.



//Начало скетча 8


#include "TFT.h"
#include "SPI.h"
TFT TFTscreen = TFT(7, 8, 1); //CS, DC, RESET
int ygo = 10, go = 0;

void setup() {
  TFTscreen.begin();
  TFTscreen.background ( 200, 200, 200 );
}

String incomingString;
String tempString;
int var, z = 0, z2 = 1, s = 0;

void PRINT( long text, int x, int y, int srift, int xStep)
{ //оптимальные значения (srift 0 xStep 6)(srift 1 xStep 6)(srift 2 xStep 12)
  //оптимальные значения (srift 3 xStep 18)(srift 4 xStep 24)(srift 5 xStep 6)
  TFTscreen.setTextSize(srift);
  int xNext = x;
  String textStrin(text);
  if (text)
  {
    int last = textStrin.length();
    while (s < 1) {
      while (z < last) {
        incomingString = textStrin;
        tempString = incomingString.substring(z, z2);
        var = tempString.toInt();
        if (var == 0) {
          TFTscreen.text("0", xNext, y);
        }
        if (var == 1) {
          TFTscreen.text("1", xNext, y);
        }
        if (var == 2) {
          TFTscreen.text("2", xNext, y);
        }
        if (var == 3) {
          TFTscreen.text("3", xNext, y);
        }
        if (var == 4) {
          TFTscreen.text("4", xNext, y);
        }
        if (var == 5) {
          TFTscreen.text("5", xNext, y);
        }
        if (var == 6) {
          TFTscreen.text("6", xNext, y);
        }
        if (var == 7) {
          TFTscreen.text("7", xNext, y);
        }
        if (var == 8) {
          TFTscreen.text("8", xNext, y);
        }
        if (var == 9) {
          TFTscreen.text("9", xNext, y);
        }
        xNext += xStep; z++; z2++;
        if (z == last) {
          xNext = x;
          z = 0;
          z2 = 1;
          return;
        }
      }
    }
  } else {
    TFTscreen.text("0", xNext, y);
  }
}

void TriugolnikLevo( int lxa, int ya1, int ya2, int xa3, int ya3) {
  TFTscreen.line( lxa, ya1, lxa, ya2);
  TFTscreen.line( xa3, ya3, lxa, ya1);
  TFTscreen.line( xa3, ya3, lxa, ya2);
}

void dvigok () {
  if ((ygo < 117) && (go == 0)) {
    ygo += 3;
    if (ygo >= 117) {
      go = 1;
    }
  }
  if ((ygo > 10) && (go == 1)) {
    ygo -= 3;
    if (ygo <= 10) {
      go = 0;
    }
  }
}

void loop() {
  int sensorReading0 = analogRead(A0);
  int t0 = map(sensorReading0, 0, 1023, 0, 127);
  int sensorReading1 = analogRead(A1);
  int t1 = map(sensorReading1, 0, 1023, 0, 129);
  //TFTscreen.background ( 200,200,200 );
  TFTscreen.noStroke();
  TFTscreen.fill( 200, 200, 200);
  TFTscreen.rect(100, 5, 50, 22);
  TFTscreen.rect(100, 110, 50, 22);
  TFTscreen.stroke(210, 0, 0);
  PRINT( ygo, 100, 5, 2, 12);
  PRINT( t0, 100, 110, 2, 12);
  TFTscreen.fill(0, 0, 255);
  TFTscreen.stroke(255, 255, 255);
  //TFTscreen.rect(70,30,30,20);
  TFTscreen.rect(t1, 30, 30, 20);
  TFTscreen.fill(0, 220, 0);
  //TFTscreen.circle (50, 70, 10);
  dvigok ();
  TFTscreen.circle (50, ygo, 10);
  TFTscreen.stroke(0, 0, 0);
  TriugolnikLevo(140, 60, 80, 30, t0);
  //TriugolnikLevo(140, 60, 80, 30, 70);
  delay(50);
}


//Конец скетча 8


Шпаргалка с координатами, для дисплея 128 на 160 пикселей."


Display 128x160




Видео "Лучший эмулятор Arduino UnoArduSim V2.6. Вторая серия."

Подключение LED и TFT дисплея к Arduino."


Лучший эмулятор Arduino UnoArduSim