Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 19E042PIM_MB_PINS
Revision 0:01c4b34da6d2, committed 2022-01-17
- Comitter:
- dzombah
- Date:
- Mon Jan 17 16:12:11 2022 +0000
- Commit message:
- ; Jovan Jovanovic 2019/0469
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/19E042PIM_MB_PINS.lib Mon Jan 17 16:12:11 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/tzwell/code/19E042PIM_MB_PINS/#5722459a201f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main1.txt Mon Jan 17 16:12:11 2022 +0000
@@ -0,0 +1,97 @@
+// biblioteke za uvoz:
+#include "mbed.h"
+
+//pinovi
+#define A PA_10
+#define B PA_9
+#define C PA_8
+#define D PB_10
+#define E PB_5
+#define F PB_4
+#define G PB_3
+#define SEL1 PB_6
+#define SEL2 PC_7
+#define SW1 PC_9
+#define SW2 PC_8
+
+//makroi:
+#define WAITTIME_MS 1
+
+// globalne promenjive:
+BusOut display (A,B,C,D,E,F,G);
+BusOut select (SEL2,SEL1);
+DigitalIn Dugme1 (SW1);
+DigitalIn Dugme2 (SW2);
+
+//definicije funkcija:
+void konvertor (int num){
+ switch(num){
+ case 0:display = 0b1000000;break;
+ case 1:display = 0b1111001;break;
+ case 2:display = 0b0100100;break;
+ case 3:display = 0b0110000;break;
+ case 4:display = 0b0011001;break;
+ case 5:display = 0b0010010;break;
+ case 6:display = 0b0000010;break;
+ case 7:display = 0b1111000;break;
+ case 8:display = 0b0000000;break;
+ case 9:display = 0b0010000;break;
+ default:display = 0x7f; break;
+ }
+ }
+
+
+void ispisi(int num){
+ int j = num%10, d = num/10;
+ if(d==0)
+ konvertor(-1);
+ else
+ konvertor(d);
+ select = 01;
+ wait_ms(WAITTIME_MS);
+ konvertor(j);
+ select = 10;
+ wait_ms(WAITTIME_MS);
+}
+
+
+
+
+//pomocne promenjive
+int lastDugme1=1,lastDugme2=1;
+int lastlastDugme1=1,lastlastDugme2=1;
+int brojac=0;
+
+
+// glavna funkcija:
+
+int main(){
+ //Default vrednosti za sve ugaseno
+ display = 1111111;
+ select = 111;
+
+ while(1){
+
+ ispisi(brojac);
+
+
+ if(lastlastDugme1==0 && lastDugme1==0 && Dugme1==1)
+ brojac=(brojac+1)%11;
+
+ if(lastlastDugme2==0 && lastDugme2==0 && Dugme2==1)
+ brojac=(brojac+10)%11;
+
+
+ lastlastDugme1=lastDugme1;
+ lastlastDugme2=lastDugme2;
+
+ lastDugme1=Dugme1;
+ lastDugme2=Dugme2;
+
+ }
+
+ }
+
+
+
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main2.txt Mon Jan 17 16:12:11 2022 +0000
@@ -0,0 +1,99 @@
+// biblioteke za uvoz:
+#include "mbed.h"
+
+//makroi:
+
+#define WAITTIME_MS 1
+
+
+const int n = 5000;
+const int k = -4995;
+
+//Pinovi:
+#define A PA_10
+#define B PA_9
+#define C PA_8
+#define D PB_10
+#define E PB_5
+#define F PB_4
+#define G PB_3
+#define SEL1 PB_6
+#define SEL2 PC_7
+#define SW1 PC_9
+#define POT1 PA_0
+#define POT2 PA_1
+#define BUZZ PA_11
+#define LD2 PB_15
+
+//Promenjive:
+PwmOut buzzer (BUZZ);
+InterruptIn sw1 (SW1);
+AnalogIn pot1 (POT1);
+AnalogIn pot2 (POT2);
+BusOut display (A,B,C,D,E,F,G);
+BusOut select (SEL2,SEL1);
+
+
+
+
+
+//Definisanje funkcija:
+
+
+
+void konvertor (int num){
+ switch(num){
+ case 0:display = 0b1000000;break;
+ case 1:display = 0b1111001;break;
+ case 2:display = 0b0100100;break;
+ case 3:display = 0b0110000;break;
+ case 4:display = 0b0011001;break;
+ case 5:display = 0b0010010;break;
+ case 6:display = 0b0000010;break;
+ case 7:display = 0b1111000;break;
+ case 8:display = 0b0000000;break;
+ case 9:display = 0b0010000;break;
+ default:display = 0x7f; break;
+
+ }
+}
+
+
+void ispisi(int num){
+ int j = num%10,d = num/10;
+ if(d==0)
+ konvertor(-1);
+ else
+ konvertor(d);
+ select = 0b01;
+ wait_ms(WAITTIME_MS);
+ konvertor(j);
+ select = 0b10;
+ wait_ms(WAITTIME_MS);
+
+}
+
+void ISR_sw1(){
+
+ ispisi(pot1* 10);
+}
+
+
+
+//Glavna funkcija:
+int main(){
+
+
+
+
+
+
+ while(1){
+
+ buzzer=pot1.read();
+ buzzer.period_us(n + k*pot2.read());
+ wait_ms(50);
+
+ sw1.fall(&ISR_sw1);
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main3.txt Mon Jan 17 16:12:11 2022 +0000
@@ -0,0 +1,206 @@
+/*
+ * Program implements MQTT client on a NUCLEO-L476RG board
+ * using arm mbed-mqtt library and ESP-WROOM-02 WiFi modem.
+ *
+ * University of Belgrade - School of Electrical Engineering
+ * Department of Electronics
+ * Bulevar Kralja Aleksandra 73, 11120 Belgrade, Serbia
+ *
+ * November 2021.
+ *
+ */
+
+#include "mbed.h"
+#include "mb_pins.h"
+#include "platform/mbed_thread.h"
+#include "MQTTClientMbedOs.h"
+
+
+// LED2 blinking rate:
+#define BLINKING_RATE_MS 250
+// Scaler to 3v3L
+#define VOLTAGE_SCALER 3.3f
+// Client yield timeout in miliseconds:
+#define YIELD_TIMEOUT_MS 1000
+// Maximum number of networks to scan for:
+#define MAX_NETWORKS 15
+// Small delay for network information printing:
+#define PRINTF_DELAY_MS 10
+
+
+// Left potentiometer:
+AnalogIn pot1(MB_POT1);
+// Left button on the motherboard:
+InterruptIn sw1(MB_SW1);
+// Right LED on the motherboard:
+DigitalOut led2(MB_LED2);
+// Pointer to a WiFi network object:
+WiFiInterface *wifi;
+// Creating TCP socket:
+TCPSocket socket;
+// Creating MQTT client using the TCP socket;
+MQTTClient client(&socket);
+// Message handler:
+MQTT::Message message;
+
+char* topic = " pubpim";
+char* topic_sub = " subpim";
+// Counter of arrived messages:
+int arrivedcount = 0;
+// Flag indicating that button is not pressed:
+int button_pressed=0;
+// HiveMQ broker connectivity information:
+const char* hostname = "pim-24";
+int port = 1883;
+// Returning a string for a provided network encryption:
+const char *sec2str(nsapi_security_t sec)
+{
+ switch (sec)
+ {
+ case NSAPI_SECURITY_NONE:
+ return "None";
+ case NSAPI_SECURITY_WEP:
+ return "WEP";
+ case NSAPI_SECURITY_WPA:
+ return "WPA";
+ case NSAPI_SECURITY_WPA2:
+ return "WPA2";
+ case NSAPI_SECURITY_WPA_WPA2:
+ return "WPA/WPA2";
+ case NSAPI_SECURITY_UNKNOWN:
+ default:
+ return "Unknown";
+ }
+}
+
+int scan_networks(WiFiInterface *wifi)
+{
+ printf("Scan:\n");
+
+ // Scan only for the number of networks, first parameter is NULL:
+ int count = wifi->scan(NULL, 0);
+ // If there are no networks, count == 0, if there is an error, counter < 0:
+ if (count <= 0)
+ {
+ printf("scan() failed with return value: %d\n", count);
+ return 0;
+ }
+
+ // Limit number of network arbitrary to some reasonable number:
+ count = count < MAX_NETWORKS ? count : MAX_NETWORKS;
+
+ // Create a local pointer to an object, which is an array of WiFi APs:
+ WiFiAccessPoint *ap = new WiFiAccessPoint[count];
+ // Now scan again for 'count' networks and populate the array of APs:
+ count = wifi->scan(ap, count);
+
+ // This time, the number of entries to 'ap' is returned:
+ if (count <= 0)
+ {
+ printf("scan() failed with return value: %d\n", count);
+ return 0;
+ }
+
+ // Print out the parameters of each AP:
+ for (int i = 0; i < count; i++)
+ {
+ printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\n", ap[i].get_ssid(),
+ sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
+ ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
+ thread_sleep_for(PRINTF_DELAY_MS);
+ }
+ printf("%d networks available.\n", count);
+
+ // Since 'ap' is dynamically allocated pointer to the array of objects, it
+ // needs to be deleted:
+ delete[] ap;
+ return count;
+}
+
+void messageArrived(MQTT::MessageData& md)
+{
+ MQTT::Message &message = md.message;
+ //printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
+ printf("Message from the browser: %.*s\r\n", message.payloadlen, (char*)message.payload);
+ ++arrivedcount;
+}
+
+void buttonFunction() {
+
+ button_pressed=1;
+
+}
+
+int main()
+{
+ // Set the interrupt event:
+ sw1.fall(&buttonFunction);
+
+ // Create a default network interface:
+ wifi = WiFiInterface::get_default_instance();
+ if (!wifi) {
+ printf("ERROR: No WiFiInterface found.\n");
+ return -1;
+ }
+
+ // Scan for available networks and aquire information about Access Points:
+ int count = scan_networks(wifi);
+ if (count == 0) {
+ printf("No WIFI APs found - can't continue further.\n");
+ return -1;
+ }
+
+ // Connect to the network with the parameters specified in 'mbed_app.json':
+ printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
+ int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
+ if (ret != 0) {
+ printf("\nConnection error: %d\n", ret);
+ return -1;
+ }
+
+ // Print out the information aquired:
+ printf("Success\n\n");
+ printf("MAC: %s\n", wifi->get_mac_address());
+ printf("IP: %s\n", wifi->get_ip_address());
+ printf("Netmask: %s\n", wifi->get_netmask());
+ printf("Gateway: %s\n", wifi->get_gateway());
+ printf("RSSI: %d\n\n", wifi->get_rssi());
+
+ // Open TCP socket using WiFi network interface:
+ socket.open(wifi);
+ // Connect to the HiveMQ broker:
+ socket.connect(hostname, port);
+ // Fill connect data with default values:
+ MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
+ // Change only ID and protocol version:
+ data.MQTTVersion = 3;
+ data.clientID.cstring = "NUCLEO-L476RG-60";
+
+ // Connect the
+ int rc = 0;
+ if ((rc = client.connect(data)) != 0)
+ printf("rc from MQTT connect is %d\r\n", rc);
+
+ if ((rc = client.subscribe(topic_sub, MQTT::QOS2, messageArrived)) != 0)
+ printf("rc from MQTT subscribe is %d\r\n", rc);
+
+ while (true) {
+ // Show that the loop is running by switching motherboard LED2:
+ led2 = !led2;
+ thread_sleep_for(BLINKING_RATE_MS);
+ if (button_pressed==1) {
+ button_pressed=0;
+ // QoS 0
+ char buf[100];
+ sprintf(buf, "V(POT1) = %1.2f\r\n", pot1*VOLTAGE_SCALER);
+ message.qos = MQTT::QOS0;
+ message.retained = false;
+ message.dup = false;
+ message.payload = (void*)buf;
+ message.payloadlen = strlen(buf)+1;
+ client.publish(topic, message);
+ }
+ // Need to call yield API to maintain connection:
+ client.yield(YIELD_TIMEOUT_MS);
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-mqtt.lib Mon Jan 17 16:12:11 2022 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-mqtt/#7fa219e87b3355e8a6fd281659697fe3a0c87630
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Mon Jan 17 16:12:11 2022 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#e4b81f67f939a0c0b11c147ce74aa367271e1279
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_app.json Mon Jan 17 16:12:11 2022 +0000
@@ -0,0 +1,25 @@
+{
+ "config": {
+ "wifi-ssid": {
+ "help": "WIFI SSID",
+ "value": "\"cvele97\""
+ },
+ "wifi-password": {
+ "help": "Wifi Password",
+ "value": "\"ekonomskitigar2022\""
+ }
+ },
+ "target_overrides": {
+ "*": {
+ "platform.stdio-convert-newlines": true
+ },
+ "NUCLEO_L476RG": {
+ "target.network-default-interface-type": "WIFI",
+ "esp8266.tx" : "PC_4",
+ "esp8266.rx" : "PC_5",
+ "esp8266.provide-default" : true,
+ "drivers.uart-serial-rxbuf-size" : 1024,
+ "drivers.uart-serial-txbuf-size" : 1024
+ }
+ }
+}
\ No newline at end of file