Тем временем на новом форуме forum.arduino.ru 13-20.10.2024

Нет ответов
Alexander
Offline
Зарегистрирован: 25.04.2010

Что нового появилось за время вашего отсутствия:
19 31
Новые темы Новые пользователи


Популярные темы

Отвлечённые темы

19 Октябрь

Зарядка от шуруповерта - ломать или нет (заметки старьевщика)

MMM
Tertuliano Maximo Afonso

MMM

С утра сгонял на барахолку, подобрать какой-нить корпус для самодельного блока питания. Сторговал у какого-то кавказца за 100р зарядку от шуруповерта, убедив его, что внутри коробки ничего нет (у него их было несколько, остальные весом с полкило, а эта - раз в пять легче).
interskol1

likes 8 replies 45 Читать далее
 

ЧЧ

16 Октябрь

RP2040 Измерение времени менее 1 мкс

Lidii

Lidii

Сейчас переменная М в строке 13 считает количество микросекунд. за 1 секунду переменная прибавляет свое значение на 1000000. Нужно чтобы переменная меняла свое значение более часто, например каждые 50 нс.

likes 14 replies 122 Читать далее
 

Песочница. Раздел для новичков

16 Октябрь

Все те же часы

v.bay
Владимир

v.bay

// Библиотека Arduino_STM32-master.zip
#include <Wire.h>
#include <uRTCLib.h>  //https://github.com/Naguissa/uRTCLib.git
#include <Adafruit_GFX_AS.h>
#include <Adafruit_ILI9341_STM.h>
#include <SPI.h>
uRTCLib rtc(0x68);

Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(PA1, PA2, PA3);  // cs, dc, rst   Mosi - PA7, SCK - PA5

float sx = 0, sy = 1, mx = 1, my = 0, hx = -1, hy = 0;
float sdeg = 0, mdeg = 0, hdeg = 0;
uint16_t osx = 120, osy = 120, omx = 120, omy = 120, ohx = 120, ohy = 120;
uint16_t x00 = 0, x11 = 0, y00 = 0, y11 = 0;
uint32_t targetTime = 0;
uint32_t hh, mm, ss;
uint8_t Week;

boolean initial = 1, www = 1, vvv = 1;

void setup(void) {
  Serial.begin(9600);
  Wire.begin();
  // rtc.set(20, 0, 23, 2, 7, 8, 24);
  //  uRTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
  tft.begin();
  tft.setRotation(2);  //расположение на экране

  tft.fillScreen(ILI9341_BLACK);  //стирание всего экрана

  tft.fillCircle(120, 120, 116, 0x4a4a);         //круг
  tft.fillCircle(120, 120, 114, ILI9341_BLACK);  //стирание внутри круга

   pinMode(PA6, INPUT_ANALOG);  //выбираем канал АЦП6
   
  // минуты черточки
  for (int i = 0; i < 360; i += 30) {
    sx = cos((i - 90) * 0.0174532925);
    sy = sin((i - 90) * 0.0174532925);
    x00 = sx * 113 + 120;
    y00 = sy * 113 + 120;
    x11 = sx * 100 + 120;
    y11 = sy * 100 + 120;

    tft.drawLine(x00, y00, x11, y11, ILI9341_WHITE);
  }
  // секунды черточки
  for (int i = 0; i < 360; i += 6) {
    sx = cos((i - 90) * 0.0174532925);
    sy = sin((i - 90) * 0.0174532925);
    x00 = sx * 102 + 120;
    y00 = sy * 102 + 120;
    // Draw minute markers
    tft.drawPixel(x00, y00, ILI9341_WHITE);
  }
  tft.fillCircle(120, 121, 3, ILI9341_WHITE);
  targetTime = millis() + 1000;
}

void loop() {
  rtc.refresh();
  if (targetTime < millis()) {

    hh = rtc.hour();
    mm = rtc.minute();
    ss = rtc.second();
    Week = rtc.dayOfWeek();

    //tft.setTextColor(0xcdcd);
    tft.setTextColor(ILI9341_YELLOW);
    tft.drawCentreString("XII", 120, 25, 2);
    tft.drawCentreString("IX", 32, 112, 2);
    tft.drawCentreString("VI", 122, 200, 2);
    tft.drawCentreString("III", 210, 112, 2);

    tft.setTextColor(ILI9341_WHITE);
    targetTime = millis() + 1000;
    ss++;
    if (ss == 60) {
      ss = 0;
      mm++;
      if (mm > 59) {
        mm = 0;
        hh++;
        if (hh > 23) {
          hh = 0;
          Week++;
        }
      }
    }
    sdeg = ss * 6;
    mdeg = mm * 6 + sdeg * 0.01666667;
    hdeg = hh * 30 + mdeg * 0.0833333;
    hx = cos((hdeg - 90) * 0.0174532925);
    hy = sin((hdeg - 90) * 0.0174532925);
    mx = cos((mdeg - 90) * 0.0174532925);
    my = sin((mdeg - 90) * 0.0174532925);
    sx = cos((sdeg - 90) * 0.0174532925);
    sy = sin((sdeg - 90) * 0.0174532925);

    if (ss == 0 || initial) {
      initial = 0;
      tft.drawLine(ohx, ohy, 120, 121, ILI9341_BLACK);
      ohx = hx * 62 + 121;
      ohy = hy * 62 + 121;
      tft.drawLine(omx, omy, 120, 121, ILI9341_BLACK);
      omx = mx * 84 + 120;
      omy = my * 84 + 120;
    }
    tft.drawLine(osx, osy, 120, 120, ILI9341_BLACK);
    osx = sx * 90 + 120;
    osy = sy * 90 + 120;
    tft.drawLine(osx, osy, 120, 120, ILI9341_RED);
    tft.drawLine(ohx, ohy, 120, 121, ILI9341_WHITE);
    tft.drawLine(omx, omy, 120, 121, ILI9341_WHITE);
    tft.drawLine(osx, osy, 120, 120, ILI9341_RED);
    tft.fillCircle(120, 121, 3, ILI9341_RED);

    if (ss == 0 || www == 1) {
      www = 0;

      tft.fillRect(60, 250, 90, 25, ILI9341_BLACK);
      tft.setTextColor(ILI9341_WHITE);
      tft.drawNumber(hh / 10, 60, 250, 4);
      tft.drawNumber(hh % 10, 75, 250, 4);
      tft.drawCentreString(":", 97, 250, 4);
      tft.drawNumber(mm / 10, 105, 250, 4);
      tft.drawNumber(mm % 10, 120, 250, 4);
      tft.drawCentreString(":", 141, 250, 4);

      tft.fillRect(60, 280, 90, 25, ILI9341_BLACK);
      tft.setTextColor(ILI9341_WHITE);
      tft.drawNumber(rtc.day() / 10, 60, 280, 4);
      tft.drawNumber(rtc.day() % 10, 75, 280, 4);
      tft.drawCentreString("/", 97, 280, 4);
      tft.drawNumber(rtc.month() / 10, 105, 280, 4);
      tft.drawNumber(rtc.month() % 10, 120, 280, 4);
      tft.drawCentreString("/", 141, 280, 4);
      tft.drawNumber(rtc.year() / 10, 150, 280, 4);
      tft.drawNumber(rtc.year() % 10, 165, 280, 4);

      tft.fillRect(200, 0, 30, 25, ILI9341_BLACK);
      tft.drawNumber(rtc.temp() / 100, 200, 0, 2);
      tft.drawCentreString(" C", 220, 0, 2);

      if (hh == 0 && mm == 0 && ss < 3 || vvv == 1) {
        vvv = 0;
        tft.fillRect(0, 0, 30, 25, ILI9341_BLACK);
        if (Week > 7) Week = 1;
        switch (Week) {
          case 1:
            tft.setTextColor(ILI9341_RED);
            tft.drawCentreString("SUN", 0, 0, 2);
            break;
          case 2:
            tft.setTextColor(ILI9341_WHITE);
            tft.drawCentreString("MON", 0, 0, 2);
            break;
          case 3:
            tft.setTextColor(ILI9341_WHITE);
            tft.drawCentreString("TUE", 0, 0, 2);
            break;
          case 4:
            tft.setTextColor(ILI9341_WHITE);
            tft.drawCentreString("WED", 0, 0, 2);
            break;
          case 5:
            tft.setTextColor(ILI9341_WHITE);
            tft.drawCentreString("THU", 0, 0, 2);
            break;
          case 6:
            tft.setTextColor(ILI9341_WHITE);
            tft.drawCentreString("FRI", 0, 0, 2);
            break;
          case 7:
            tft.setTextColor(ILI9341_GREEN);
            tft.drawCentreString("SAT", 0, 0, 2);
            break;
        }
      }
    }
    tft.fillRect(150, 250, 30, 25, ILI9341_BLACK);
    tft.drawNumber(ss / 10, 150, 250, 4);
    tft.drawNumber(ss % 10, 165, 250, 4);

    if (ss == 0 || ss == 30 && (ss < 4 || ss < 34 )) {  //каждые 30 секунд
      int value = 0;  //переменная (локальная)= 0, она может быть определена в начале программы(глоиальная) 
      value = analogRead( PA6 );  //читаем данные АЦП
      float val = value * (5.50 / 4095.0 );  //ввод аналогового сигнала от 0 до 4095 (от 0 до 5.5 В)
      tft.fillRect(0, 250, 50, 25, ILI9341_BLACK);  //clear места на экране
      if ( val > 3.50) tft.setTextColor(ILI9341_GREEN); //по необходимости
      else if ( val >= 3.35) tft.setTextColor(ILI9341_YELLOW); //
      else if ( val < 3.35 ) tft.setTextColor(ILI9341_RED); //
      char c1[] = { 0 };  //создаем масив   
      dtostrf(val, 1, 2, c1); //конвертируем floft -> char 
      tft.drawCentreString(c1, 0, 250, 2); //выводим как char
      tft.drawCentreString("V", 35, 250, 2);
    }
  }
}

likes 19 replies 121 Читать далее
 

Программирование

13 Октябрь

Справочник по командам AVR

ua6em

ua6em

Удобный справочник ONLINE

likes 17 replies 39 Читать далее
 

Отвлечённые темы

17 Октябрь

USB3.1 PORTABLE SSD disk 8Tb (NONAME)

SAB

SAB

Всем добра! Взял у китайца такой диск

Xiaomi MIJIA E81 Портативный SSD 1 ТБ Оригинальный SSD-диск Внешний SSD...

Смотри, что есть на AliExpress! И еще более 200 миллионов товаров со всего мира с возможностью поиска по фото и большими скидками. Погрузись в увлекательный мир шопинга без границ!