-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
97 lines (80 loc) · 2.41 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// System calls
#include <unistd.h>
// Input/output streams and functions
#include <iostream>
// Interfaces with GPIO
#include "matrix_hal/gpio_control.h"
// Communicates with MATRIX device
#include "matrix_hal/matrixio_bus.h"
////////////////////////
// MOTOR PORTS //
//////////////////////
#define R_MOTOR_PWM 15 //(ORANGE)
#define L_MOTOR_PWM 16 //(GREEN)
#define R_MOTOR_IN1 13 //(ORANGE)
#define L_MOTOR_IN1 12 //(GREEN)
#define R_MOTOR_IN2 11 //(ORANGE)
#define L_MOTOR_IN2 10 //(GREEN)
////////////////////////
// INITIAL VARIABLES //
//////////////////////
// GPIOOutputMode is 1
const uint16_t GPIOOutputMode = 1;
// GPIOInputMode is 0
const uint16_t GPIOInputMode = 0;
// Holds desired GPIO pin for output [0-15]
uint16_t pin_out;
// Holds desired output state
uint16_t pin_out_state;
// Holds desired GPIO pin for input [0-15]
uint16_t pin_in;
int main() {
////////////////////
// INITIAL SETUP //
//////////////////
// Create MatrixIOBus object for hardware communication
matrix_hal::MatrixIOBus bus;
// Initialize bus and exit program if error occurs
if (!bus.Init()) return false;
/////////////////
// MAIN SETUP //
///////////////
// Create GPIOControl object
matrix_hal::GPIOControl gpio;
// Set gpio to use MatrixIOBus bus
gpio.Setup(&bus);
// Prompt user for GPIO pin
std::cout << "Select Pin [0-15] For Output: ";
// Log user input
std::cin >> pin_out;
// Prompt user for GPIO state
std::cout << "Pin Output State [0-1] : ";
// Log user input
std::cin >> pin_out_state;
// Prompt user for GPIO pin
std::cout << "Select Pin [0-15] For Input: ";
// Log user input
std::cin >> pin_in;
// Set pin_out mode to output
gpio.SetMode(pin_out, GPIOOutputMode);
// Set pin_in mode to input
gpio.SetMode(pin_in, GPIOInputMode);
// Set pin_out to output pin_out_state
gpio.SetGPIOValue(pin_out, pin_out_state);
// Endless loop
while (true) {
// Get state of pin_in
uint16_t pin_in_state = gpio.GetGPIOValue(pin_in);
// Clear console
std::system("clear");
// Output pin_out info to console
std::cout << "[ Output Pin : " << pin_out << " ]"
<< " [ Output State : " << pin_out_state << " ]" << std::endl;
// Output pin_in info to console
std::cout << "[ Input Pin : " << pin_in << " ]"
<< " [ Input State : " << pin_in_state << " ]" << std::endl;
// Sleep for 10000 microseconds
usleep(10000);
}
return 0;
}