Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab2 / lab2

.c
Скачиваний:
8
Добавлен:
18.02.2023
Размер:
1.24 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <bcm2835.h>
#define PIN RPI_V2_GPIO_P1_32
#define PWM_CHANNEL 0
#define RANGE 100
int main(int argc, char **argv) {
	if (!bcm2835_init()) {
		return 1;
	}
	if (argc == 3) {
		if(!strcmp(argv[1], "write")) {
			bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
			int value = atoi(argv[2]);
			if (value == 0) {
				bcm2835_gpio_write(PIN, LOW);
			} else if(value == 1) {
				bcm2835_gpio_write(PIN, HIGH);
			} else {
				printf("Unknown value.");
			}
		} else if (!strcmp(argv[1], "pwn")) {
			bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_ALT0);
			bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_16);
			bcm2835_pwm_set_mode(PWM_CHANNEL, 1, 1);
			bcm2835_pwm_set_range(PWM_CHANNEL, RANGE);
			int value = atoi(argv[2]);
			if (value >= 0 && value <= RANGE) {
				bcm2835_pwm_set_data(PWM_CHANNEL, value);
			} else {
				printf("Unknown value.");
			}
		} else {
			printf("Unknown command.");
		}
	} else {
		bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_ALT0);
		bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_16);
		bcm2835_pwm_set_mode(PWM_CHANNEL, 1, 1);
		bcm2835_pwm_set_range(PWM_CHANNEL, RANGE);
		bcm2835_pwm_set_data(PWM_CHANNEL, 20);
	}
	bcm2835_close();
	return 0;
}
Соседние файлы в папке lab2