Kategoriarkiv C / C++ (programming language)

AvcodedByMadi.NET

C++ Standard Template Library in Practice

Pågående kurs – UDEMY 2021-07


C++ is one of the most widely used programming languages. Fast, efficient, and flexible, it is used to solve many problems. In particular, it is the Standard Template Library (STL) that gives C++ its power. In this course, we show you how.

Using real-world examples, we focus on how STL handles and manipulates data. We examine containers and iterators, and how data can be transformed into meaningful information using algorithms. There is coverage of I/O streams, strings and numerical methods, and how performance can be optimized through careful consideration of memory allocation and manipulation. We also demonstrate how multitasking and shared data is handled through concurrency and parallelism classes and utilities.

By the end of the course, you will understand the newer aspects of C++ STL and will be able to overcome tasks that are time-consuming or would break your stride while developing.

About the Author

James Slocum has been a professional developer for over 10 years. He graduated from NJIT with a Bachelor’s degree in Computer Engineering in 2008, and again with a Master’s in Computer Science in 2011. He currently works for Audible as a software engineer and tech lead for the library group. The languages he uses the most are Java, JavaScript, C++, and Dart. In his free time, he enjoys learning about new languages and technology.

What you’ll learn

  • Efficient and effective ways to store data using STL containers
  • Manage application performance using STL memory allocation classes, and enhance these classes by developing your allocation routines
  • How data is structured and how the structure can be traversed using iterators
  • How algorithms are used to transform data into useful and meaningful information
  • Multitasking and managing shared data using concurrency and parallelism
  • Managing input and output (I/O) using streams and the role of stream buffers
  • How the STL has standardized common tasks

Are there any course requirements or prerequisites?

  • This video course is designed for both experienced C++ programmers and people with some knowledge of OOP concepts.

Who this course is for:

  • If you want to overcome difficult phases of development with C++ and leverage its features using modern programming practices, then this course is for you.
AvcodedByMadi.NET

Udemy pågående kurs – Qt 5 C++

About this course

Build Cross Platform C++ GUI Applications with Qt, Run them on Windows, Mac, Linux, Android, iOS and Embedded Devices

This course will take you from zero to a level where you can write any Qt C++ Gui application you may want. It is aimed at complete beginners but people with varying levels of experience wishing to learn Qt C++ Gui will equally find it useful.

Qt is second to none in the field of building cross platform GUI application based on C++. It can currently be used to build software that runs on virtually any platform out there: Windows, Mac, Linux, Android, IOS and even embedded systems. You basically build your software once and all you have to do is build it for your desired platform and voila !

The course starts with a complete beginner to both C++ and Qt in mind, and we take  you through the the process of getting your environment set up on your platform of choice :

  • We do a live install of Qt Creator on Windows
  • We do a live install of Qt Creator on Linux
  • We guide you though how you would install Qt Creator on a Mac
  • We guide you through Qt Creator showing you the tools that work together to get your application built

We then take you on a tour of the C++ programming language, covering the concepts deemed important to start working with Qt to build your shinny GUI applications. You don’t need to be a C++ wizard to start writing your applications using Qt. One of the goals behind Qt itself is to be as easy to use as possible, helping you to focus on your application logic rather than the C++ complex plumbing. This does not mean that you can do with zero C++ knowledge though. That’s why we take you on a tour to cover the basic concepts of the language covering topics like:

  • Running your first console application and understanding the main function
  • Streams that help you write and read data from your C++ applications
  • Variables and Data Types
  • Basic C++ Operators and Control flow where among other things you learn about if clauses and loops
  • Build an app to guess numbers and put together the concepts learned so far
  • C++ Functions
  • C++ classes
  • Building your first Qt C++ GUI Application
  • Building a GUI Version of your Number guessing game

We then visit the fascinating concept signals and slots in Qt where  you learn the most flexible way to respond to events : 

  • We’ll explore lambda functions in C++ in general, we’ll need them to use their SIGNAL SLOT syntax
  • We explore different ways to connect signals to slots in Qt
  • We then do a concept enforcing demo for you to try them out

Next we dive in the Qt Widgets section and visit some of the most important widget classes in Qt : 

  • QWiget
  • QMainWindow
  • QMessageBox
  • QPushButton
  • QLineEdit
  • QTextEdit
  • QLabel
  • QHBoxLayout, QVBoxLayout, QGridLayout
  • We visit size policies and stretches and how they help tie the knots in  your layouts
  • QCheckBox and QRadioButton
  • QList
  • QComboBox
  • QListWidget
  • QTabWidget
  • QMenu, QToolBar, QAction

Dialogs are explored next , we look at QDialog and how to build  your own custom dialog class from scratch , QDialogButtonBox, QMessageBox, QFontDialog, QFileDialog, QInputDialog and how they add a layer of interactivity to your Qt GUI applications.

We then go on and explore how to work with the Qt Resource System , Styling your Qt applications with QStyle, QPalette and Style Sheets, Saving your application settings with QSetting, Working with Files and Directories using QFile and QDir and we wrap up the course with a tour of the network capabilities of Qt where we : 

  • See the different classes that are available to work with networks in Qt
  • Build an application to download web pages in our Qt Applications
  • Build an application to consume Rest APIs in your Qt Applications

This course was designed to help you succeed in becoming a Qt Gui application developer regardless of your current level of expertise. The only requirement is to bring in an open mind and a strong willingness to learn. Now, please check out some of the preview videos andl let’s get you STARTED building cross platform GUI applications using Qt.

What you’ll learn

  • The fundamentals of working with Qt to build C++ Gui Applications
  • Working with Qt Widget Classes
  • Working with Dialog Classes
  • Using the Qt Resource System
  • Styling Qt Applications
  • Working with Networks to fetch HTTP Data
  • Working with the File System
  • Model View Architecture

AvcodedByMadi.NET

Bilens några funktioner med Arduino UNO | MCU Atmega168

Bakgrund:

Bilar är typiska exempel på system som innefattar många mindre system som pratar med varandra. Exempelvis så kan lås, larm och lampor aktiveras/avaktiveras med ett enda knapptryck från fjärrkontrollen och inställningar för motor, antisladd system och så vidare kan reglera sig själva utifrån mätvärden från olika sensorer. 

I bilar pratar man om flera olika ECUs – Electronic Control Units, som har hand om dessa delsystem och som inte är helt olika vår microcontroller. Dessa ECU:er kommunicerar med varandra och interagerar med varandra. Ett vanligt protokoll för kommunikation är CAN BUS.

Det här gör bilar till bra exempel på komplicerade system där många delsystem faktiskt inte har någonting alls att göra med själva körandet av bilen.

Uppgiften:

Tanken med den här uppgiften är att fokusera på kringliggande system i en bil, eller ska vi säga konceptet för kringliggande system i en bil och att bygga ett system med vår microcontroller som hanterar flera mindre bitar i en tänkt bil. 

Det här kommer ske med vad vi har i kit:et och kopplas på vår breadboard, så lite fantasi kommer man ju få använda också. Vi har ju inga hjul t ex, men vi har en motor och en fläkt och den kan visa oss vilket håll motorn snurrar så vi kan avgöra om vi åker framåt eller bakåt. Detsamma gäller för att svänga på hjulen, som får symboliseras av ett servo. Se detta som ett proof-of-concept, som ni får förklara också i samband med redovisningen av projektet. 

Uppgiften består av några obligatoriska delar som SKA vara med i projektet:

  • Bilen ska kunna svänga(med hjälp av servot)
  • Bilen ska kunna köra framåt och bakåt (med hjälp av IC-krets motordrivare och motor)
  • Bilen ska kunna tuta (med hjälp av buzzer)
  • Man ska kunna styra bilen (Styrspaken sköter framåt/bakåt samt svänga höger/vänster + tuta när styrspak trycks ned)

För er som siktar på högre betyg finns det också möjlighet att bygga på med ytterligare system. 

Dessa väljer ni själva, kombinerar eller hittar på, men exempelvis:

  • Backvarnare: (Med hjälp av LEDs, Buzzer och avståndsmätare HC-SR04)
  • Dörrlås: (Med hjälp av fjärrkontroll, IR-mottagare, buzzer och LEDS)
  • Frostvarnare: (Med hjälp av Termometer och LCD)
  • Automatiskt Helljus: (Med hjälp av Fotoresistor och LED)
  • Kupé-dimmer:(Ljuset dimmar ned 5 sekunder efter att dörren stängts; dörr symboliseras av en knapp och belysning av en LED)
  • Heads-up-display: (Visa bensinförbrukning, hastighet osv mha LCD, växla info mha knapp eller potentiometer)
  • Växelindikator: (med 7-segmentsdisplay)
  • Hastighetsmätare: (med 4-siffrig 7-segmentsdisplay)
  • Ytterbelysning (blinkers, bromsljus, backljus, helljus): (Med hjälp av LEDs och knappar

AvcodedByMadi.NET

Hemautomationscentral med Atmega168

Menysystem med LCD

Funktionerna kommer att symboliseras av en LED (för varje funktion) och de funktioner som ska finnas i systemet är:

Belysning:

  • Vardagsrum
  • Kök

Värme:

  • Golvvärme

Vitvaror:

  • Kaffebryggare

BelysningVärme och Vitvaror blir alltså egna kategorier som kommer ha underkategorier under sig. 

Det ska gå att läsa av i menysystemet huruvida ett system är aktivt och dessutom ska respektive LED vara tänd om systemet är aktivt. 

Inlämning:

Det är ok att använda valfria bibliotek i denna uppgift (inklusive Arduino.h ,Liquid Crystal.h eller ert egna LCD-bibliotek)

AvcodedByMadi.NET

Knight Rider med Atmega168

Manipulation av I/O pinnar på MCU Atmega 168 – Lågnivå programmeringsspråk C / C++

I den gamla hederliga serien Knight Rider från 80-talet så kör huvudpersonen runt i en bil med en lysramp i fronten, där ljuset sveper fram och tillbaka från sida till sida.

#include <avr/io.h>
#include <util/delay.h>

void portON(){
  DDRB = 255;
  DDRD = 255;
}

void ledToLeft(){
// LED1  ON
    PORTB |= 1 << PB3;

    _delay_ms(100);

    // LED1  OFF
    PORTB &= ~(1 << PB3);

    // LED2  ON
    PORTB |= 1 << PB2;
    _delay_ms(100);
    // LED2  OFF
    PORTB &= ~(1 << PB2);

    // LED3  ON
    PORTB |= 1 << PB1;
    _delay_ms(100);

    // LED3  OFF
    PORTB &= ~(1 << PB1);

    // LED4  ON
    PORTD |= 1 << PD6;

    _delay_ms(100);

    // LED4  OFF
    PORTD &= ~(1 << PD6);

    // LED5  ON
    PORTD |= 1 << PD5;
    _delay_ms(100);
    // LED5  OFF
    PORTD &= ~(1 << PD5);

    // LED6  ON
    PORTD |= 1 << PD3;
    _delay_ms(100);

    // LED6  OFF
    PORTD &= ~(1 << PD3);
}

void ledToRight(){
    // LED5  ON
    PORTD |= 1 << PD5;
    _delay_ms(100);
    // LED5  OFF
    PORTD &= ~(1 << PD5);

    // LED4  ON
    PORTD |= 1 << PD6;

    _delay_ms(100);

    // LED4  OFF
    PORTD &= ~(1 << PD6);

    // LED3  ON
    PORTB |= 1 << PB1;
    _delay_ms(100);

    // LED3  OFF
    PORTB &= ~(1 << PB1);

    // LED2  ON
    PORTB |= 1 << PB2;
    _delay_ms(100);
    // LED2  OFF
    PORTB &= ~(1 << PB2);
}

int main()
{
  portON();

  while (1)
  {
    ledToLeft();
    ledToRight();
  }
  
}
AvcodedByMadi.NET

Trafikljus med Atmega168

Manipulation av I/O pinnar på MCU Atmega 168 – Lågnivå programmeringsspråk C / C++

Uppgiftsbeskrivning:

1) När din microcontroller startar ska endast röd lysdiod tändas. 

2) Efter 3 sekunder ska röd lysdiod släckas och gul tändas.

3) När endast gul lysdiod varit tänd i 2 sekunder, ska den slockna och grön diod tändas.

4) Endast den gröna lysdioden lyser i 5 sekunder, sen slocknar den

5) Då tänds gul OCH röd lysdiod i två sekunder och sen slocknar den gula

6) Vi är nu tillbaka i ursprungsläget och endast röd lysdiod lyser. 

#include <avr/io.h>
#include <util/delay.h>

int main()
{

  DDRB = 255;

  while (1)
  {
    // LED RED ON
    PORTB |= 1 << PB5;

    // Delay 2sec
    _delay_ms(3000);

    // LED Red OFF
    PORTB &= ~(1 << PB5);

    // LED Yellow ON
    PORTB |= 1 << PB4;

    // Delay 2sec
    _delay_ms(2000);

    // LED Yellow OFF
    PORTB &= ~(1 << PB4);

    // LED Green ON
    PORTB |= 1 << PB0;

    // Delay 5sec
    _delay_ms(5000);

    // LED Green OFF
    PORTB &= ~(1 << PB0);

    // RED & Yellow ON
    PORTB |= 1 << PB5;
    PORTB |= 1 << PB4;

    // Delay 2sec
    _delay_ms(2000);

    // All B ports OFF
    PORTB = 0;
  }
}