Commit 4dcfc199 authored by 957dd's avatar 957dd

add pin pwm

parent 9db62149
#ifndef __GPIO_H__
#define __GPIO_H__
// 定义 PWM 引脚的 WiringPi 编号
#define PWM_PIN 1
// 定义 PWM 频率为 50Hz
#define PWM_FREQ 50
// 定义占空比范围,这里设置为 0 到 1000
#define MIN_DUTY 0
#define MAX_DUTY 1000
#endif
\ No newline at end of file
#ifndef __GPIO_PWM_H__
#define __GPIO_PWM_H__
// 定义 PWM 引脚的 WiringPi 编号
void pwm_speed();//pwm控制函数
void midde_pwm();
void speed_change(unsigned char *buf);//速度和转向值处理mqtt函数
#endif
\ No newline at end of file
......@@ -6,11 +6,12 @@
#define filename "/home/orangepi/car/master/Deviceld.txt"
pthread_t thread[5];
pthread_t thread[6];
//开启线程
int thread_start(void *serial_usart1(void *arg),void *AppExit(void *arg),
void *Mqttbeat(void *arg),void *serial_usart2(void *arg),void *opensh(void *arg),void *Mqtt_onnect(void *arg))
void *Mqttbeat(void *arg),void *serial_usart2(void *arg),
void *opensh(void *arg),void *Mqtt_onnect(void *arg))
{
if(pthread_create(&thread[0],NULL,serial_usart1,NULL)!=0)
......@@ -66,6 +67,7 @@ void thread_end()
pthread_join(thread[4], NULL);
pthread_join(thread[5], NULL);
}
#endif
\ No newline at end of file
No preview for this file type
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
File deleted
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
// 定义 PWM 引脚的 WiringPi 编号
#define PWM_PIN_SPEED 2
#define PWM_PIN_CHANGE 21
#define SPEED_IN_1 24
#define SPEED_IN_2 26
// 定义 PWM 频率为 50Hz
#define PWM_FREQ 50
// 定义占空比范围,这里设置为 0 到 1000
#define MAX_DUTY 1000
void pwm_speed() {
int pwm_clock = 19200000 / (PWM_FREQ * 1000);
pinMode(PWM_PIN_SPEED,PWM_OUTPUT);
pinMode(PWM_PIN_CHANGE,PWM_OUTPUT);
pinMode(SPEED_IN_1,PWM_OUTPUT);
pinMode(SPEED_IN_2,PWM_OUTPUT);
pwmSetClock(PWM_PIN_SPEED,pwm_clock);//=19200*1000/(hz*2000)
pwmSetRange(PWM_PIN_SPEED,MAX_DUTY);
pwmSetClock(PWM_PIN_CHANGE,pwm_clock);//=19200*1000/(hz*2000)
pwmSetRange(PWM_PIN_CHANGE,MAX_DUTY);
}
void midde_pwm()
{
pwmWrite(PWM_PIN_SPEED,150);
pwmWrite(PWM_PIN_CHANGE,150);
}
void mode_1_flont(unsigned char gval)
{
if(gval<=50)
{
pwmWrite(PWM_PIN_SPEED,150);
}
if(50<gval&&gval<=55)
{
pwmWrite(PWM_PIN_SPEED,155);
}
if(55<gval&&gval<=60)
{
pwmWrite(PWM_PIN_SPEED,158);
}
if(60<gval&&gval<=65)
{
pwmWrite(PWM_PIN_SPEED,160);
}
if(65<gval&&gval<=70)
{
pwmWrite(PWM_PIN_SPEED,163);
}
if(70<gval&&gval<=75)
{
pwmWrite(PWM_PIN_SPEED,165);
}
if(75<gval&&gval<=90)
{
pwmWrite(PWM_PIN_SPEED,170);
}
if(90<gval&&gval<=100)
{
pwmWrite(PWM_PIN_SPEED,170);
}
}
void mode_2_back(unsigned char gval)
{
if(gval<=50)
{
pwmWrite(PWM_PIN_SPEED,150);
}
if(50<gval&&gval<=55)
{
pwmWrite(PWM_PIN_SPEED,143);
}
if(55<gval&&gval<=60)
{
pwmWrite(PWM_PIN_SPEED,140);
}
if(60<gval&&gval<=65)
{
pwmWrite(PWM_PIN_SPEED,135);
}
if(65<gval&&gval<=70)
{
pwmWrite(PWM_PIN_SPEED,130);
}
if(70<gval&&gval<=75)
{
pwmWrite(PWM_PIN_SPEED,128);
}
if(75<gval&&gval<=90)
{
pwmWrite(PWM_PIN_SPEED,125);
}
if(90<gval&&gval<=100)
{
pwmWrite(PWM_PIN_SPEED,125);
}
}
void mode_3_left(unsigned char gval)
{
if(gval<=45)
{
pwmWrite(PWM_PIN_CHANGE,150);
}
if(gval>45&&gval<=51)
{
pwmWrite(PWM_PIN_CHANGE,165);
}
if(gval>51&&gval<=57)
{
pwmWrite(PWM_PIN_CHANGE,175);
}
if(gval>57&&gval<=63)
{
pwmWrite(PWM_PIN_CHANGE,180);
}
if(gval>63&&gval<=69)
{
pwmWrite(PWM_PIN_CHANGE,180);
}
if(gval>69&&gval<=75)
{
pwmWrite(PWM_PIN_CHANGE,185);
}
}
void mode_4_right(unsigned char gval)
{
if(gval<=45)
{
pwmWrite(PWM_PIN_CHANGE,150);
}
if(gval>45&&gval<=51)
{
pwmWrite(PWM_PIN_CHANGE,105);
}
if(gval>51&&gval<=57)
{
pwmWrite(PWM_PIN_CHANGE,95);
}
if(gval>57&&gval<=63)
{
pwmWrite(PWM_PIN_CHANGE,90);
}
if(gval>63&&gval<=69)
{
pwmWrite(PWM_PIN_CHANGE,90);
}
if(gval>69&&gval<=75)
{
pwmWrite(PWM_PIN_CHANGE,85);
}
}
void speed_change(unsigned char *buf)//速度和转向引脚数值处理函数
{
unsigned char mode=buf[1];
unsigned char val=buf[2];
switch(mode)
{
case 1:
mode_1_flont(val);
break;
case 2:
mode_2_back(val);
break;
case 3:
mode_3_left(val);
break;
case 4:
mode_4_right(val);
break;
default:
break;
}
}
\ No newline at end of file
File added
......@@ -14,6 +14,7 @@
#include "mqtt.h"
#include "gps.h"
#include "opensh.h"
#include "gpio_pwm.h"
char* TOPIC;
char* TOPIC2;
......@@ -112,7 +113,8 @@ void message_3(cJSON *body,cJSON *pwm_ctrl)//message_type为3,控制pwm
printf("gtypeTemp:%d\n",gvalt[0]);
printf("gmodeTemp:%d\n",gvalt[1]);
printf("gvalTemp:%d\n",gvalt[2]);
serial_Write(gvalt);
serial_Write(gvalt);
speed_change(gvalt);
}
void message_4(cJSON *body, cJSON *pin_setctrl)//message 为4时候
......
No preview for this file type
......@@ -14,7 +14,7 @@
#include <arpa/inet.h>
#include <ifaddrs.h>
#include <wiringPi.h>
#include "gpio.h"
#include "gpio_pwm.h"
#include "gps.h"
#include "main.h"
#include "ip.h"
......@@ -27,7 +27,6 @@ char buffer[30]; // 用于存储文件内容
void *serial_usart1(void *arg)
{
printf("serial_usart 1 start\n");
......@@ -37,7 +36,7 @@ void *serial_usart1(void *arg)
return NULL;
}
void *AppExit(void *arg)//2s程序,出现意外2s自动停止
void *AppExit(void *arg)//出现意外自动停止
{
while(1)
......@@ -55,7 +54,7 @@ void *AppExit(void *arg)//2s程序,出现意外2s自动停止
serial_Write(bufpwm2);
serial_Write(bufpwm3);
serial_Write(bufpwm4);
midde_pwm();
}
}
......@@ -154,7 +153,7 @@ int main(int argc, char *argv[]) {
printf("WiringPi setup failed!\n");
return 1;
}
pwm_speed() ;
Delay_Ms(10,0);
const char *readbuf=device_inspect();
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment