Вторник, 20 Апр 2021, 12:46
Приветствую Вас Странник

Портал разработчиков

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Программирование » Микроконтроллеры » Примеры работ на Arduino (исходники)
Примеры работ на Arduino
AvelyevДата: Понедельник, 11 Янв 2016, 19:42 | Сообщение # 1
Avelyev
Сэнпай
Гильдия: Гильдия Хакеров
Заклинаний: 520
загрузка наград ...
Ранг: 0
Присутствие: Меня нет
smile

В каждом из нас спит гений, но с каждым днем все крепче и крепче. ^_^
 
AvelyevДата: Понедельник, 11 Янв 2016, 20:01 | Сообщение # 2
Avelyev
Сэнпай
Гильдия: Гильдия Хакеров
Заклинаний: 520
загрузка наград ...
Ранг: 0
Присутствие: Меня нет
Первый исходник:
Измерение сопротивления с помощью Arduino

Принцип:
Падение напряжения на проводниках прямо пропорционально их сопротивлениям


Схема подключения к Arduino Nano:



Принципиальная схема:


Скейтч:

Код
#define PIN A0 //работаем с пин A0
#define RESISTOR 10000.0 //значение постоянного сопротивления Ом
#define Va 5.0 // напряжение питания
//ARDUINO имеет аналоговый вход. При чтении с него возвращается значение от 0 до 1023

void setup(void) {
Serial.begin(9600); //для работы с COM портом
}

void loop(void) {
float data; //данные с A0
float V; //напряжение в средней точке

data = analogRead(PIN); //читаем
Serial.print("A0 -> "); //выводим на COM порт "A0 -> "
Serial.println(data); //выводим на COM порт значение A0 и переводим на новую строку
V = (Va/1023.0)*data; //вычислим напряжение
Serial.print("Voltage -> "); //выводим на COM порт "Voltage -> "
Serial.print(V); //выводим на COM порт значение напряжения          
Serial.println(" V"); //выводим на COM порт " V" и переводим на новую строку
  
data = (1023.0 / data) - 1; //вычисляем сопротивление в Омах
data = RESISTOR / data;   //вычисляем сопротивление в Омах

Serial.print("Resistance -> ");//выводим на COM порт "Resistance -> "
Serial.print(data);            //выводим на COM порт значение сопротивления в Омах
Serial.print(" Om || ");         //выводим на COM порт " Om || "

data = data/1000; //вычисляем сопротивление в килоОмах

Serial.print(data);   //выводим на COM порт значение сопротивления в килоОмах
Serial.println(" kOm"); //выводим на COM порт " kOm" и переводим на новую строку

delay(500);  //ждем пол секунды
}


Данный пример будет работать с погрешностью все зависит от питания Arduino
Прикрепления: 4106956.jpg(98.9 Kb) · 9447463.jpg(44.7 Kb) · 1659914.jpg(3.5 Kb)


В каждом из нас спит гений, но с каждым днем все крепче и крепче. ^_^
 
AvelyevДата: Воскресенье, 19 Мар 2017, 01:52 | Сообщение # 3
Avelyev
Сэнпай
Гильдия: Гильдия Хакеров
Заклинаний: 520
загрузка наград ...
Ранг: 0
Присутствие: Меня нет
Подключение 7 сегментного 4 цифрового дисплея HS420561K-A32 к Arduino
Код
//Display HS420561K-A32
int digit1 = 11; //PWM Display pin 12
int digit2 = 10; //PWM Display pin 9
int digit3 = 9; //PWM Display pin 8
int digit4 = 6; //PWM Display pin 6

int segA = A1; //Display pin 11
int segB = 3; //Display pin 7
int segC = 4; //Display pin 4
int segD = 5; //Display pin 2
int segE = A0; //Display pin 1
int segF = 7; //Display pin 10
int segG = 8; //Display pin 5

void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);

pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);

pinMode(13, OUTPUT);
}

void loop() {

//long startTime = millis();

displayNumber(millis()/1000);

//while( (millis() - startTime) < 2000) {
//displayNumber(1217);
//}
//delay(1000);
}

void displayNumber(int toDisplay) {
#define DISPLAY_BRIGHTNESS  500

#define DIGIT_ON  HIGH
#define DIGIT_OFF  LOW

long beginTime = millis();

for(int digit = 4 ; digit > 0 ; digit--) {

//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_OFF);
break;
case 2:
digitalWrite(digit2, DIGIT_OFF);
break;
case 3:
digitalWrite(digit3, DIGIT_OFF);
break;
case 4:
digitalWrite(digit4, DIGIT_OFF);
break;
}

//Turn on the right segments for this digit
lightNumber(toDisplay % 10);
toDisplay /= 10;

delayMicroseconds(DISPLAY_BRIGHTNESS);
//Display digit for fraction of a second (1us to 5000us, 500 is pretty good)

//Turn off all segments
lightNumber(10);

//Turn off all digits
digitalWrite(digit1, DIGIT_ON);
digitalWrite(digit2, DIGIT_ON);
digitalWrite(digit3, DIGIT_ON);
digitalWrite(digit4, DIGIT_ON);
}

while( (millis() - beginTime) < 10) ;
//Wait for 20ms to pass before we paint the display again
}

//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {

#define SEGMENT_ON  HIGH
#define SEGMENT_OFF LOW

switch (numberToDisplay){

case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_OFF);
break;

case 1:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;

case 2:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;

case 3:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_ON);
break;

case 4:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;

case 5:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;

case 6:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;

case 7:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;

case 8:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_ON);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;

case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_ON);
digitalWrite(segG, SEGMENT_ON);
break;

case 10:
digitalWrite(segA, SEGMENT_OFF);
digitalWrite(segB, SEGMENT_OFF);
digitalWrite(segC, SEGMENT_OFF);
digitalWrite(segD, SEGMENT_OFF);
digitalWrite(segE, SEGMENT_OFF);
digitalWrite(segF, SEGMENT_OFF);
digitalWrite(segG, SEGMENT_OFF);
break;
}
}
Прикрепления: 3388275.jpg(110.7 Kb)


В каждом из нас спит гений, но с каждым днем все крепче и крепче. ^_^
 
Форум » Программирование » Микроконтроллеры » Примеры работ на Arduino (исходники)
  • Страница 1 из 1
  • 1
Поиск:


Хостинг от uCoz -->