#1 2024-04-26 12:49:43

martinways
Учасник
Зареєстрований: 2015-03-11
Повідомлень: 91

Доробити скетч за $$

Доброго дня. Є стандартний екран з енкодером RepRapDiscountFullGraphicSmartController, плата RAMPS та Mega 2560.
Також є такий скетч, який робить наступне  - генерується частота за допомогою tone() та виводиться на екран, частота регулються потенціометром. Переробити треба так, щоби частота змінювалась не потенциометром, а енкодером в діапазоні від 1000 до 10000герц з кроком 500гц, а також щоби ця частота була на виходах 26 та 36, як відомо, tone() може працювати одночасно тільки на одному порті, тому треба зробти якесь швидке перекидання чи якийсь інший фокус, щоби вона була на цих двух портах.

#include <U8glib.h>

#define DOGLCD_CS       16
#define DOGLCD_MOSI     17
#define DOGLCD_SCK      23
#define BTN_EN1         31
#define BTN_EN2         33
#define pson            5

const int potPin = A1;
const int StepA = 26;
const int StepB = 36;

int potValue = 0;
int frequency = 1000; 

U8GLIB_ST7920_128X64_1X u8g(DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS);
void setup(void) {
  u8g.begin();
  pinMode(StepA, OUTPUT);
  pinMode(StepB, OUTPUT);
  pinMode(pson, OUTPUT);
  u8g.setColorIndex(1);   
}

void loop() {
  u8g.firstPage();
  do {
    u8g.setFont(u8g_font_unifont);
    u8g.setPrintPos(30, 30); 
    u8g.print(frequency);
    u8g.print(" Hz");
  } while (u8g.nextPage());

  potValue = analogRead(potPin);
  frequency = map(potValue, 0, 1023, 1000, 10000); 

  tone(StepA,  frequency);
  tone(StepB, frequency);
  
  digitalWrite(pson, HIGH);
}

Неактивний

#2 2024-04-30 22:52:52

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 415

Re: Доробити скетч за $$

martinways пише:

а також щоби ця частота була на виходах 26 та 36, як відомо, tone() може працювати одночасно тільки на одному порті, тому треба зробти якесь швидке перекидання чи якийсь інший фокус, щоби вона була на цих двух портах.

припаяйте перемичку

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму