O’rnatilgan tizimlar 2-labaratoriya ishi Guruh raqami


Download 0.85 Mb.
Sana18.06.2023
Hajmi0.85 Mb.
#1567963
Bog'liq
2-labaratoriya ishi o\'znatilgan tizim


O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
KOMPUTER INJINIRING FAKULTETI





O’rnatilgan tizimlar
2-labaratoriya ishi

Guruh raqami: 213-20
Topshirdi:Tilavov Sunnatillo
Qabul qildi: Nurmurodov Javohir
Toshkent-2023

1.RGB-yorug‘lik diodi. Impuls kengligining modulyatsiyasi.



int pinR = 11;
int pinB = 10;
int pinG = 9;

int potenR;


int potenB;
int potenG;

void setup()


{
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}

void loop()


{
potenR = map(analogRead(A0), 0, 1023, 0, 255);
potenB = map(analogRead(A1), 0, 1023, 0, 255);
potenG = map(analogRead(A2), 0, 1023, 0, 255);
analogWrite(pinR, potenR);
analogWrite(pinB, potenB);
analogWrite(pinG, potenG);
delay(50);
Serial.print(" Red: ");
Serial.print(potenR);
Serial.print(" Blue: ");
Serial.print(potenB);
Serial.print(" Green: ");
Serial.println(potenG);
delay(100);
}

2. Bir razryadli yetti segmetli indikator. Arduino MK orqali raqamlarni indikatorga chiqarish.



void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for (int i = 6; i <= 13; i++){
pinMode(i, OUTPUT);
}
pinMode (5, INPUT);
}
int array_de_numeros [][8] = {
//{6,7,8,9,10,11,12,13} <- equivalencia pines
{0,1,1,1,1,0,1,1},//0
{0,0,1,0,0,0,1,0},//1
{0,1,0,1,0,1,1,1},//2
{0,1,1,0,0,1,1,1},//3
{0,0,1,0,1,1,1,0},//4
{0,1,1,0,1,1,0,1},//5
{0,1,1,1,1,1,0,1},//6
{0,0,1,0,0,0,1,1},//7
{0,1,1,1,1,1,1,1},//8
{0,0,1,0,1,1,1,1},//9
};
void muestra(int x){
for (int y=1; y<=100; y++){
for (int j = 0; j <= 7; j++){
digitalWrite(j+6,(array_de_numeros[x][j]));
delay(1);
digitalWrite(j+6,LOW);
}
}
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(5)== 1){//mantener presionado el boton por medio segundo
for (int i = 0; i <= 9; i++){
muestra(i);
}
}
}
3. 7 ta etti segmentli indikatordan tashkil topgan 4 razryadli matrisa. Dinamik aks ettirishni amalga oshirish (Arduinoda). 8x8 yorug‘lik diodili matritsani boshqarish.

#define ROW1 13
#define ROW2 12
#define ROW3 11
#define ROW4 10
#define ROW5 9
#define ROW6 8
#define ROW7 7
#define ROW8 6

#define COL1 5


#define COL2 4
#define COL3 3
#define COL4 2
#define COL5 A4
#define COL6 A3
#define COL7 A2
#define COL8 A1

const int row[] = {ROW1, ROW2, ROW3, ROW4, ROW5, ROW6, ROW7, ROW8};


const int col[] = {COL1,COL2, COL3, COL4, COL5, COL6, COL7, COL8};

int A[8][8] = {{1,1,1,1,1,1,1,1},


{1,1,1,0,0,1,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,0,0,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,1,1,1,1,1,1}};

void setup() {


Serial.begin(9600);
for (int i = 2; i <= 13; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
pinMode(A1, OUTPUT);
digitalWrite(A1, LOW);
pinMode(A2, OUTPUT);
digitalWrite(A2, LOW);
pinMode(A3, OUTPUT);
digitalWrite(A3, LOW);
pinMode(A4, OUTPUT);
digitalWrite(A4, LOW);
}

void loop() {


delay(10);


yaz(A);

}


void yaz(int matrix[8][8]){
for (int c=0; c<8; c++){

digitalWrite(col[c], HIGH);


for (int r = 0; r < 8; r++){
digitalWrite(row[r], 255*matrix[r][c]);
delay(1);
}
for (int r = 0; r < 8; r++){
digitalWrite(row[r], HIGH);
delay(1);
}
digitalWrite(col[c], LOW);
}
}
4. 74NS595 suruvchi registr mikrosxemasi. 4 razryadli matrisani boshqarish.

const byte SEGMENT_PINS[8] = {9, 8, 7, 6, 2, 3, 4, 5};
const byte POWER_PINS[4] = {10, 11, 12, 13};
const byte SEGMENT_LENGTH = sizeof(SEGMENT_PINS) / sizeof(byte);
const byte POWER_LENGTH = sizeof(POWER_PINS) / sizeof(byte);
const unsigned int SEGMENTS[8] = {
// middle
1 << 0,
// top left
1 << 1,
// top
1 << 2,
// top right
1 << 3,
// dot
1 << 4,
// bottom right
1 << 5,
// bottom
1 << 6,
// bottom left
1 << 7
};
const unsigned int DIGITS[10] = {
// 0
(SEGMENTS[1] | SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[5] | SEGMENTS[6] | SEGMENTS[7]),
// 1
(SEGMENTS[3] | SEGMENTS[5]),
// 2
(SEGMENTS[0] | SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[6] | SEGMENTS[7]),
// 3
(SEGMENTS[0] | SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[5] | SEGMENTS[6]),
// 4
(SEGMENTS[0] | SEGMENTS[1] | SEGMENTS[3] | SEGMENTS[5]),
// 5
(SEGMENTS[0] | SEGMENTS[1] | SEGMENTS[2] | SEGMENTS[5] | SEGMENTS[6]),
// 6
(SEGMENTS[0] | SEGMENTS[1] | SEGMENTS[2] | SEGMENTS[5] | SEGMENTS[6] | SEGMENTS[7]),
// 7
(SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[5]),
// 8
(SEGMENTS[0] | SEGMENTS[1] | SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[5] | SEGMENTS[6] | SEGMENTS[7]),
// 9
(SEGMENTS[0] | SEGMENTS[1] | SEGMENTS[2] | SEGMENTS[3] | SEGMENTS[5] | SEGMENTS[6])
};
unsigned int x = 0;
void setup() {
byte length;
for (byte i = 0; i < POWER_LENGTH; i++) {
pinMode(POWER_PINS[i], OUTPUT);
digitalWrite(POWER_PINS[i], LOW);
}
for (byte i = 0; i < SEGMENT_LENGTH; i++) {
pinMode(SEGMENT_PINS[i], OUTPUT);
digitalWrite(SEGMENT_PINS[i], HIGH);
}
}
void loop() {
x %= 10000;
// loop 4 digits for assigning the dot
for (byte k = 0; k < POWER_LENGTH; k++) {
for (byte j = 0; j < (100 / POWER_LENGTH); j++) {
// loop 4 digits
unsigned int y = 1;
for (byte i = 0; i < POWER_LENGTH; i++) {
y *= 10;
// set segments to the digit
// assign the dot to the digit each 250ms
setLED(POWER_PINS[i], DIGITS[(x / (y / 10)) % 10] | ((k == i) ? SEGMENTS[4] : 0));
}
// total delay 8ms 4 digits
// delay extra 2ms to be 10ms in a period
delay(2);
}
}
x++;
}
void setLED(byte powerPin, unsigned int segmentValue, bool enabled) {
digitalWrite(powerPin, enabled ? HIGH : LOW);
for (byte i = 0; i < SEGMENT_LENGTH; i++) {
if ((segmentValue & SEGMENTS[i]) > 0) {
digitalWrite(SEGMENT_PINS[i], enabled ? LOW : HIGH);
}
}
delay(1);
}
void setLED(byte powerPin, unsigned int segmentValue) {
setLED(powerPin, segmentValue, true);
setLED(powerPin, segmentValue, false);
}



//LED TEST w/ 74HC595
//by Amanda Ghassaei 2012
//http://www.instructables.com/id/Multiplexing-with-Arduino-and-the-74HC595/

/*
* This program is free software; you can redistribute it and/or modify


* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/

//this code will light up each led in the 4x4 matrix one at a time


//pin connections- the #define tag will replace all instances of "latchPin" in your code with A1 (and so on)
#define latchPin A1
#define clockPin A0
#define dataPin A2

//looping variables


byte i;
byte j;

//storage variable


byte dataToSend;

void setup() {


//set pins as output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {


for (i=0;i<4;i++){
for (j=0;j<4;j++){
//bit manipulation (more info at http://arduino.cc/en/Reference/Bitshift , http://arduino.cc/en/Reference/BitwiseXorNot , and http://arduino.cc/en/Reference/BitwiseAnd)
dataToSend = (1 << (i+4)) | (15 & ~(1 << j));//preprare byte (series of 8 bits) to send to 74HC595
//for example when i =2, j = 3,
//dataToSend = (1 << 6) | (15 & ~(1 << 3));
//dataToSend = 01000000 | (15 & ~(00001000));
//dataToSend = 01000000 | (15 & 11110111);
//dataToSend = 01000000 | (15 & 11110111);
//dataToSend = 01000000 | 00000111;
//dataToSend = 01000111;
//the first four bits of dataToSend go to the four rows (anodes) of the LED matrix- only one is set high and the rest are set to ground
//the last four bits of dataToSend go to the four columns (cathodes) of the LED matrix- only one is set to ground and the rest are high
//this means that going through i = 0 to 3 and j = 0 to three with light up each led once
// setlatch pin low so the LEDs don't change while sending in bits
digitalWrite(latchPin, LOW);
// shift out the bits of dataToSend to the 74HC595
shiftOut(dataPin, clockPin, LSBFIRST, dataToSend);
//set latch pin high- this sends data to outputs so the LEDs will light up
digitalWrite(latchPin, HIGH);
delay(500);//wait
}}}
5. Pezonurlatgich. Pezonurlatgichni boshqarish: tonni o‘zgartirish, davomiligini o‘zgartirish

#include
#define COLS 16 // Columnas del LCD
#define ROWS 2 // Filas del LCD

// balanca Beurer GS36 de design Slim na worten 24€


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


double sensorValue=0;


double pesoMaximo = 10000;
double prescisao = 0.1;

void setup()


{
Serial.begin(9600);
lcd.begin(16,2);
pinMode(A0, INPUT);
pinMode(8, OUTPUT);

}
void loop()


{
lcd.clear();
sensorValue = analogRead(A0);
double result = conversion(sensorValue);
lcd.print(result);
lcd.print(" Kg");

delay(500);


if(result>=5000 && result<=10000){

digitalWrite(8, HIGH);


}else{
digitalWrite(8, LOW);


}
}
double conversion(double sensorValue)


{
return sensorValue * pesoMaximo / 1023.0;
}
6.Tranzistorning kuchaytirish xususiyatini namoyish etish. Elektryuritgich misolida aylanishini o‘zgartirish.

int relay = 8;
void setup()
{
pinMode(relay, OUTPUT);
}
void loop()
{digitalWrite(relay, HIGH);
delay(1200);
digitalWrite(relay, LOW);
delay(1200);}
Download 0.85 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling