1

Тема: Оптимизация

/*      |--------------|
    13---|              |---12
  3.3v---|              |---11
  AREF---|              |---10
    14---|              |--- 9
    15---|              |--- 8
    16---|              |--- 7
    17---|              |--- 6
    18---|              |--- 5
    19---|              |--- 4
    NC---|              |--- 3
    NC---|              |--- 2
    5V---|              |---GND
 RESET---|              |---RESET
   GND---|              |--- 0
   VIN---|              |--- 1
  MISO---|              |---SS
   SCK---|    |    |    |---MOSI
         |--------------|
*/

мигание светодиодом D13

void setup() {
  pinMode(13,OUTPUT);
}

void loop() {
  digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
  delay(1000);
}

Скетч использует 924 байт (2%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.

void setup(){ 
  DDRB =  0B00100000;
}

void loop(){
  PORTB |= (1 << 5);
  delay(1000);
  PORTB &= ~(1 << 5);
  delay(1000);
}

Скетч использует 642 байт (1%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.

2

Re: Оптимизация

Скорость переключения выхода D13

void setup() {
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}

void loop() {
  unsigned long times = micros();
  for(int i=0;i<100;i++){
  digitalWrite(13,HIGH);
  digitalWrite(13,LOW);
  }
  Serial.println(micros()-times);
  delay(1000);
}

Время 680 мкс

void setup(){ 
  Serial.begin(9600);
  DDRB =  0B00100000;
}

void loop(){
  unsigned long times = micros();
  for(int i=0;i<100;i++){
  PORTB |= (1 << 5);
  PORTB &= ~(1 << 5);
  }
  Serial.println(micros()-times);
  delay(1000);
}

Время 52 мкс

3

Re: Оптимизация

Чтение состояния выхода D13

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
}

void loop() {
  unsigned long times = micros();
  int x = 0;
  for (int i = 0; i < 1000; i++) {
    if (digitalRead(13) == 1) {
      x++;
    };
  }
  Serial.println(micros() - times);
  Serial.println(x);
  delay(1000);
}

Время 2584 мкс

void setup() {
  Serial.begin(9600);
  DDRB =  0B00111111;
  PORTB |= (1 << 5);
}

void loop() {
  unsigned long times = micros();
  int x = 0;
  for (int i = 0; i < 1000; i++) {
    if (((PINB >> 5) & 1) == 1) {
      x++;
    }
  }
  Serial.println(micros() - times);
  Serial.println(x);
  delay(1000);
}

Время 444 мкс

4

Re: Оптимизация

При подаче 1  на D3, на D13 1  и наоборот

void setup() {
  pinMode(13, OUTPUT);
  pinMode(3, INPUT);
}

void loop() {

  if (digitalRead(3) == 1) {
    digitalWrite(13, HIGH);
  }
  if (digitalRead(3) == 0) {
    digitalWrite(13, LOW);
  }
}

Скетч использует 920 байт (2%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.


void setup() {
  DDRB = 0B00100000;
  DDRD = 0B00000000;
}

void loop() {
  if (((PIND >> 3) & 1) == 1) {
    PORTB |= (1 << 5);
  }
  if (((PIND >> 3) & 1) == 0) {
    PORTB &= ~(1 << 5);
  }
}

Скетч использует 458 байт (1%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.

5

Re: Оптимизация

подтягивающий резистор на вход

void setup(){ 
  Serial.begin(9600);
  DDRB = 0b00000000;// n/a n/a D13 D12 D11 D10 D9 D8 - ВСЕ ПИНЫ КАК ВХОДЫ
  PORTB = 0B00000001;// ВКЛЮЧЕНИЕ ПОДТЯГИВАЮЩЕГО РЕЗСТОРА НА D8

}

void loop(){

  Serial.println(((PINB >> 0) & 1),BIN);// ЧТЕНИЕ D8

 
  delay(1000);
}

6

Re: Оптимизация

Данный контент доступен только зарегистрированным пользователям.


 #include <LED4x7.h>

int x;

void setup(){
 led_timer();
}

void loop(){ 
  led_setInt(256,3,1,  27,-1,-1,-1); 
  // int 0...9999, положение запятой 0...3, яркость 0...10
  /* последние 4 цифры: 
  -1 не выводить
  10 пусто
  11 A
  12 b
  13 C
  14 c
  15 d
  16 E
  17 F
  18 P
  19 u
  20 U
  21 -
  22 нижнее = 
  23 верхнее = 
  24 r
  25 нижнее o
  26 верхнее o
  27 t
  */
  delay(1000);
  }